标签为 timer 的存档
[转]这就是大学
Author: 柳世杀神·GabrielGon22 七 2009
美妙的Timer类——Timer与时钟
Author: 柳世杀神·GabrielGon18 一 2008

Timer绝对是as3改进的亮点之一。它的使用技巧和美妙之处不是一下能说完的。这里先对它进行个完整的说明,再举几个具有启发的例子。为初学者处理计时器打下牢固的基础。Timer类:Timer类继承EventDispatcher。是FlashPlayer计时器接口。计时器可以用来间隔调用和延时调用。在其过程中可以访问其状态甚至进行干预。以此塑造出来的灵活性足以替代as2中的setInterval和getTimer。Timer类不是顶级类,它在flash.utils包中,要用import flash.utils.Timer声明。构造函数为new Timer(间隔,次数)。间隔时间为毫秒。次数为0表示无限循环。属性: 代码:currentCount:当前次数。只读。代码:repeatCount:总次数。可以设置。代码:delay:运行间隔,单位为毫秒。可以设置。代码:running:是否在运行中。这个属性很重要,它为是否开始进行第二次计时提供了保障。上面总次数和间隔可以设置。也就是说可以动态的改变循环次数和间隔时间。并且不会影响当前次数。方法: 代码:start():如果没有开始则开始运行。如果停止则继续运行。注意:第一趟计时完毕后也并不重置计数器。需要使用reset方法重置。代码:stop():暂停计时。代码:reset():停止并且重新开始计时。事件: 代码:time:类型为:flash.events.TimerEvent.TIMER。每次间隔到达调用timer事件。[code]complete:类型为:flash.events.TimerEvent.TIMER_COMPLETE。完成调用complete事件。[/code]看到了Timer类的整体后,as2的程序员一定兴奋不已,想摩拳擦掌开始实验。新手可能会思索半天,觉得不好记忆又想到底应该如何使用呢?关于记忆我的总结是:4个属性,3个方法,2个事件。下面举几个典型的例子。范例1:没有哪个例子比一个时钟更加适合描述Timer类的基本应用。步骤一:在flash舞台上放置一个钟面,再新建层画出时针、分针、秒针和轴心。3个指针分别命名为hourPoint,minutePoint,secondPoint。这些指针的注册点在底部中央。如图: 下面我们来让它运转起来:在属性面板中输入Clock。新建一个文档类Clock.as。代码如下: 代码:[code] package {import flash.display.Sprite;import flash.display.MovieClip;import flash.utils.Timer;import flash.events.TimerEvent;public class Clock extends Sprite{ var clockTimer:Timer=new Timer(1000,0); var bellSound:Bell=new Bell(); public function Clock() { refreshPoint(); //初始化指针 clockTimer.start(); //开始运行计时器 clockTimer.addEventListener(TimerEvent.TIMER,timerFunction); //添加事件 } private function timerFunction(evtObj:TimerEvent):void { refreshPoint(); } private function refreshPoint():void { var currentDate:Date=new Date(); //秒针每走一格旋转6度。 secondPoint.rotation=currentDate.seconds*6; //分针每走一个旋转6度加上秒针对它的增量 minutePoint.rotation=currentDate.minutes*6+currentDate.seconds*6/60; //使用取余数的方法把24小时制转化为12小时制,时针每走一格旋转30度加上分针对它的增量 var hour12:int=currentDate.hours%12; hourPoint.rotation=hour12*30+currentDate.minutes*30/60; //整点报时功能 if(currentDate.minutes==0 && currentDate.seconds==0) { if(hour12) { ...


最活跃用户