您的位置:首页 > 其它

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

2018-02-20 21:12 871 查看
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的等价物更简单和使用较少的内存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: