Egret的TimerEvent.TIMER和Event.ENTER_FRAME的区别

简介: Egret的TimerEvent.TIMER和Event.ENTER_FRAME的区别

TimerEvent.TIMER,从Timer的参数就可以看出来,是delay多少时间,意思是当一个函数执行完成后再Delay多久。

举例: Timer 设置为 间隔40ms,而Timer的函数运行花费25ms,那么,Timer将以65ms的间隔恒定运行。

比如间隔多久发射子弹,创建敌机,创建陨石等...


Event.ENTER_FRAME是定时间隔多少时间出发。如果执行时间比间隔时间长,则会间隔执行时间这么久。

举个例子: Flash的stage.FrameRate设置为 25即,Event.EnterFrame的出发间隔为40ms,如果Event.EnterFrame的执行函数花费时间为25ms,那么Event.EnterFrame将以间隔40ms的恒定频率运行。

Event.ENTER_FRAME事件做动画的缺陷

  1,每当想要改变指定的帧速率的时候,我们必须更新基于该帧速率计算速度的所有代码(除非使用基于速度的动画)

  2,Flash运行器不总是能到达指定的帧速率,动画变慢。这种变慢甚至因系统负载而不同,帧速率可能只在短时期下降后恢复到它的正常速率。

  在一般情况中,用稍有差别的速度播放一个动画是可以接受的,但是,当要求精确控制或者可见精度是有影响的时候,我们必须考虑帧速率的缺陷。此时,我们用基于逝去的时间而不是关联于指定帧来计算移动一个移动的距离更合适(即基于速度的动画)


比如物体移动坐标,计算碰撞等


所以如果每一帧都要检测的话,最好使用Event.ENTER_FRAME,否则用TimerEvent.TIMER,Event.ENTER_FRAME的动画代码一般要比基于Timer的等价物更简单和使用较少的内存


目录
相关文章
25 QT - event函数
25 QT - event函数
55 0
|
24天前
|
传感器 JavaScript 前端开发
Event Loop
【10月更文挑战第29天】
32 4
|
4月前
|
Web App开发 JavaScript
vue报错【解决方案】 [Violation] Added non-passive event listener to a scroll-blocking <some> event.
vue报错【解决方案】 [Violation] Added non-passive event listener to a scroll-blocking <some> event.
442 0
|
5月前
(20):event()
(20):event()
|
6月前
|
存储 JavaScript 前端开发
说说你对Event Loop的理解是什么
Event Loop(事件循环)是JavaScript中处理异步操作的一种机制,它帮助我们协调和处理各种任务的执行顺序。
59 0
|
JavaScript
event loop的理解
event loop的理解
|
JavaScript 前端开发 UED
Event详解
Event详解
187 0
|
前端开发 JavaScript
前端|event.target与event.currentTarget的区别
前端|event.target与event.currentTarget的区别
88 0
|
前端开发 JavaScript
Event Loop详解
事件循环其实就是入栈出栈的循环。上面例子中说到了setTimeout,那setInterval呢,Promise呢等等等等,有很多异步的函数。但是这些异步任务有分宏任务(macro-task)和微任务(micro-task): macro-task包括: setTimeout, setInterval, setImmediate, I/O, UI rendering。
2453 0