教程目录
1 演示效果
2 实现原理
3 Demo

1 演示效果
主要参考9ria帖子,年代久远,忘了。
另可参考 jquery+css3实现元素颤抖特效

PC演示地址

手机扫码:

2 实现原理
定时器,每隔一段时间改变震动对象的x,y。 可追加rotation和alpha。
使用方法

[C#] 纯文本查看 复制代码
?
1
2
震动目标obj,1秒内震动10次,震动最大距离10
ShakeTool.getInstance().shakeObj(obj, 1, 10, 10);

工具源码

[C#] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/**
 * 震动工具
 * @author chenkai
 * [url=home.php?mod=space&uid=81950]@since[/url] 2017/5/24
 *
 * Example:
 * 震动目标obj,1秒内震动10次,震动最大距离10
 * ShakeTool.getInstance().shakeObj(obj, 1, 10, 10);
 */
class ShakeTool {
    private static instance:ShakeTool;   //单例
    private initX:number;                //初始位置
    private initY: number; 
    private target:egret.DisplayObject;  //震动目标
    private maxDis: number;              //震动距离
    private count: number = 0;           //计时器次数
    private rate: number;                //一秒震动次数
    private timer:egret.Timer = new egret.Timer(1000);
     
        public static getInstance():ShakeTool{
            if(this.instance == null){
                this.instance = new ShakeTool();
            }
            return this.instance;
        }
         
    /**
     * 震动显示对象
     * @param        target    震动目标对象
     * @param        time      震动持续时长(秒)
     * @param        rate      震动频率(一秒震动多少次)
     * @param        maxDis    震动最大距离
     */
    public shakeObj(target: egret.DisplayObject,time: number,rate: number,maxDis: number): void {
        this.target = target;
        this.initX = target.x;
        this.initY = target.y;
        this.maxDis = maxDis;
        this.count = time * rate;
        this.rate = rate;
     
        this.timer.delay = 1000/rate;
        this.timer.repeatCount = this.count;
        this.timer.addEventListener(egret.TimerEvent.TIMER,this.shaking, this);
        this.timer.addEventListener(egret.TimerEvent.TIMER_COMPLETE, this.shakeComplete, this);
        this.timer.reset();
        this.timer.start();
    }
     
    private shaking(): void {
        egret.Tween.removeTweens(this.target);
        this.target.x = this.initX - this.maxDis + Math.random()*this.maxDis*2;
        this.target.y = this.initY - this.maxDis +  Math.random()*this.maxDis*2;
        egret.Tween.get(this.target).to({x:this.initX, y:this.initY},999/this.rate);   
    }
     
    private shakeComplete(): void {
        if(this.target){
            egret.Tween.removeTweens(this.target);
            this.target.x = this.initX;
            this.target.y = this.initY;
        }
        this.timer.removeEventListener(egret.TimerEvent.TIMER,this.shaking,this);
        this.timer.removeEventListener(egret.TimerEvent.TIMER_COMPLETE,this.shakeComplete,this);
    }
    /**停止震动 */
    public stop(){
        this.shakeComplete();
    }
}
   

3 Demo

转载于:https://www.cnblogs.com/gamedaybyday/p/9219922.html

【咸鱼教程】震屏效果相关推荐

  1. 震屏效果java_CocosCreator 实现手机震动效果

    IOS 震动的写法#import @interface JSC : NSObject + (void) ddd1; + (void) ddd2; + (void) ddd3; + (void) ddd ...

  2. fullPage教程 -- 整屏滚动效果插件 fullpage详解

    为什么80%的码农都做不了架构师?>>>    本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:fullPage教程 -- 整屏滚动效果插件 fullpage详解 1. ...

  3. Leaflet中使用Leaflet.fullscreen插件实现全屏效果

    场景 Vue+Leaflet实现加载OSM显示地图: Vue+Leaflet实现加载OSM显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面的基础上,怎样实现地图全屏效果. ...

  4. 项目实训(十三)——FPS游戏射击反馈震屏及UI子弹数量

    一.前言 本篇博客记录的内容为上篇的延续,将介绍完成的射击反馈震屏及UI子弹数量等工作内容.这里实现的是开枪以后抖动屏幕的效果以及子弹数在游戏界面的UI显示. 至此,FPS游戏的单机开发部分就已经大致 ...

  5. android 点击图片动画效果,Android仿微信图片点击全屏效果

    废话不多说,先看下Android图片点击全屏效果: 先是微信的 再是模仿的 先说下实现原理,再一步步分析 这里总共有2个Activity一个就是主页,一个就是显示我们图片效果的页面,参数通过Inten ...

  6. html视频分屏插件,视频分屏效果制作 可在同一个画面播放多个视频的操作步骤详解...

    我们在看电影电视剧的时候,当剧情是两个角色在相同时间不同地点发生着什么事情的时候,在视频画面就会出现分屏效果,就是在同一个画面播放着两个视频的效果,小编觉得这个效果很有意思,而且实现起来不难,所以今天 ...

  7. unity实现游戏战斗震屏

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 总结 前言 大部分战斗类游戏都会有震屏需求,震屏的简单实现方法,包括随机震屏,横向震屏,纵向震屏 using Syst ...

  8. AE脚本:像素破损撕拉花屏效果Datamosh

    想要给您的视频添加花屏故障效果吗?Aescripts Datamosh for mac这个AE脚本制作出来的像素破损花屏效果就像是视频太久远发生了花屏故障一样,datamosh脚本是一款在After ...

  9. [Cocos2d-x]视差滚屏效果的实现

    视差滚屏效果的实现: 我们在做IOS游戏开发的时候,经常会遇到那种屏幕动的效果,比如跑酷类的游戏,就这这种效果的典型应用. 效果图: 核心代码: bool HelloWorld::init() { / ...

最新文章

  1. 最适合python程序员用的笔记本-作为一个Python程序员,电脑上应该具备哪些软件?...
  2. printf()详解之终极无惑-转载
  3. EPOCH batchsize
  4. nginx搭建静态服务器(127.0.0.1/localhost访问)
  5. 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?
  6. java 创建文件夹_VS Code用来开发JAVA项目真香
  7. CV Papers|计算机视觉论文推荐周报20200501期
  8. 神奇!大神利用AI修复古董纪录片,还原1920年的京城生活
  9. VS2010+Opencv_2.4.7+win7的配置攻略及错误解决
  10. 计算生物学_01机器学习理论部分
  11. Jersey客户端API调用REST风格的Web服务
  12. linux查看内网命令,nmap命令查看内网信息的几个...-centos6.3中lspci查看硬件信息提...-学习linux cut 命令的用法_169IT.COM...
  13. 2022年3月显示器主观科普与配置选型
  14. Vim插件管理插件Vim-plug
  15. Pigsty是什么?
  16. 万恶的less-loader
  17. html代码seo,SEO必学基础html代码基础
  18. Excel——如何在多种分类下填充空白单元格
  19. 国外服务器和国内服务器 不同时区的问题
  20. 使用计算机录制声音10,Win10电脑麦克风无法录音怎么解决 win10麦克风声音无法输入的解决方法...

热门文章

  1. python怎么让x轴45°展示_python opencv实现任意角度的透视变换实例代码
  2. 频率分布直方图组距如何确定_吃透教材理解教参,《直方图》教学反思
  3. js websocket同步等待_WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器...
  4. php扩展包是什么意思,php – 扩展或包括 – 什么是更好的Twig?
  5. java class扫描接口_JAVA 扫描指定路径下所有的jar包,并保存所有实现固定接口的类型...
  6. php点选按钮ajax,php – 在单选按钮上显示div中的数据单击ajax
  7. python【力扣LeetCode算法题库】53- 最大子序和
  8. 仅使用python基本语法、即不使用任何模块、编写_微博可以设置“仅半年内可见”!你竟然还不知道???...
  9. arduino水温度传感器数字显示_【雕爷学编程】Arduino动手做(5)---热敏温度传感器模块...
  10. python调试器的功能,python调试器是什么