zoukankan      html  css  js  c++  java
  • as的Enter_Frame与Timer

    As3中的Timer和Event.EnterFrame是有明显的区别的。

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

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

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

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

    Timer类是ActionScript3.0新增的, 来代替早期的setInterval()和setTimeout()函数。
    当创建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自动降低的影响。

  • 相关阅读:
    最佳路径搜索算法1
    积分方程的程序化解决方案
    lcov
    nvidia driver
    dependency
    scp ssh-server
    boost 安装 latest
    ubuntu 快捷键
    nvidia drive
    查询优化器 postgres
  • 原文地址:https://www.cnblogs.com/zilongblog/p/3260533.html
Copyright © 2011-2022 走看看