zoukankan      html  css  js  c++  java
  • EnterFrame和Timer区别

    1. enterFrame是一个由播放器发布的事件,每过(1/帧频)秒向全部继承自DisplayObject的对象发送。
    在这个事件之前正好是屏幕的一次固定刷新。(即两次更新的时间间隔为(1/帧频)秒)

    2. 假设 Flash的舞台的帧频stage.FrameRate设置为25帧/秒,即每帧运行时间是1000ms/25帧,即1帧占40毫秒。Event.EnterFrame的出发间隔为40ms,如果Event.EnterFrame的执行函数花费时间为25ms,那么Event.EnterFrame将以间隔40ms的恒定频率循环执行函数。 

    3.Timer就不一样了,Timer 设置为间隔40ms,而Timer的函数运行花费25ms,那么,Timer将以65ms的间隔恒定运行,可设置循环运行次数。

    4. enterFrame和timerEvent区别:
    as3中的Timer和Event.EnterFrame是有明显的区别的。
    Evnet.EnterFrame是定时间隔多少时间出发。如果执行时间比间隔时间长,则会间隔执行时间这么久。
    举例: Flash的stage.FrameRate设置为25,即Event.EnterFrame的出发间隔为1000ms*1/25ms==40ms,
    如果Event.EnterFrame的执行函数花费时间为25ms,但Event.EnterFrame也将以间隔40ms的恒定频率运行。
    Timer就不一样了,Timer的参数delay就可以看出来,是delay(延迟)多少时间,意思是当一个函数执行完成后再delay多久。
    举例: Timer设置为间隔40ms,而Timer的函数运行花费25ms,那么,Timer将以40ms+25ms==65ms的间隔恒定运行。
    当创建Timer类的实例时,它会在每个时间间隔激活timer事件,你可以在事件之间指定延时,
    然后就有足够的时间去激活Timer构造器了:
    var timer:Timer = new Timer(delay, repeatCount);
    使用addEventListener来设置一个函数处理这个事件,然后使用timer的start()方法启动或stop()停止它。

    使用场合:
    1,EnterFrame是恒定的,稳定的,比较适合用来更新渲染画面,如Tween。 但不适合做异步计算和处理, 如果能保证cpu每帧的计算效率在40ms以内,可以把计算放到enterframe时序中,这样可以稳定25fps,当然,这不包括渲染损耗。

    2,Timer在100ms的倍数是很稳定的,pc和mac都能稳定,非100的倍数的值会有两个相差不大的值交替出现。

    3,EnterFrame在12、20、30fps都比25fps更稳定,25fps会有两个相差不到大的数值交替出现。

    4,EnterFrame在计算时优于Timer。

    5,Timer更适合使用异步的长周期来改变数据的状态,并不适合短时间持续更新数据,或是渲染画面。

    6,EnterFrame和Timer同样受到非活动创口的fps自动降低的影响。

  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/atong/p/2921372.html
Copyright © 2011-2022 走看看