·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3中Timer定时器常用代码范例源代码

时间:2016-11-26 12:47酷播
Timer定时器是精确的,但是定时器的执行结果并非绝对精确。无论是Flash还是Flex,最终的应用程序都是以SWF文件存储

Timer定时器是精确的,但是定时器的执行结果并非绝对精确。无论是Flash还是Flex,最终的应用程序都是以SWF文件存储。而FlashPlayer在解释SWF文件时,会建立基于帧率的周期循环。每次舞台更新的时间间隔是固定的,脚本中的舞台操作会受到时间轴帧率的制约。

作为一个多线程的应用程序,FlashPlayer 执行脚本不需要依赖帧率,但是所有的屏幕输出都要借助FlashPlayer的渲染引擎。如果时间轴帧率为10,则运行时舞台每100毫秒播放一帧。当间隔为80毫秒的定时器触发时,SWF应用程序立刻执行该定时器的侦听函数,但是在定时器侦听函数中的任何屏幕操作,都不会及时的反应在舞台上。只有在 100毫秒时,FlashPlayer才会更新舞台显示。定时器在160毫秒第二次触发时,SWF应用程序需在200毫秒更新舞台显示。理论上8000毫秒内执行100次定时器,但实际上在帧率为10的SWF应用中,舞台更新只有80次。有可能在舞台刷新间隔内,连续执行两次定时器操作。

定时器的触发事件间隔可以自由设置,所有的定时器事件都不会错过。屏幕显示虽然不是实时更新,但是由于刷新的速度很快,不会造成显著影响。实际上,任何语言的定时器都要受制于系统时钟,都不是绝对精确的。

  1. import flash.events.TimerEvent; 
  2.     import flash.utils.Timer; 
  3.  
  4.             // 创建一个新的五秒的 Timer 
  5.             var minuteTimer:Timer = new Timer(1000, 5); 
  6.              
  7.             // 为间隔和完成事件指定侦听器 
  8.             minuteTimer.addEventListener(TimerEvent.TIMER, onTick);   
  9. /* 
  10. Timer 对象在每次达到指定的间隔时都会调度 TimerEvent 对象。TimerEvent 对象的事件类型是 timer(由常量 TimerEvent.TIMER 定义)。TimerEvent 对象包含的属性与标准 Event 对象包含的属性相同。 
  11. */ 
  12.             minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
  13.  
  14.  
  15. /* 
  16. 如果将 Timer 实例设置为固定的间隔数,则在达到最后一次间隔时,它还会调度 timerComplete 事件(由常量 TimerEvent.TIMER_COMPLETE 定义)。 
  17. 也就是说,当Timer没有设置固定间隔数,如上(1000,5)里面的5次,则不会调用TIMR_COMPLETE事件!这一点要注意 
  18.  */            
  19.             // 启动计时器计时 
  20.             minuteTimer.start(); 
  21.  
  22.             // 显示到目前为止的时间计数 
  23.             // 该事件的目标是 Timer 实例本身。 
  24.             trace("tick" + event.target.currentCount); 

出处:http://blog.csdn.net/DocSun/archive/2009/07/03/4319029.aspx

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器