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

Posted 流子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的等价物更简单和使用较少的内存


以上是关于Egret的TimerEvent.TIMER和Event.ENTER_FRAME的区别的主要内容,如果未能解决你的问题,请参考以下文章

build.gradle hasproperty的属性是在哪个文件中定义的

添加Timer

es mapping 怎么指定主键生成策略

as3条件语句不起作用

db2中,若变更了表结构和约束,都要进行啥操作啊?为啥我在reorg和r

AS3 - 我怎样才能找到下载前 mp3 的总时间?