您的位置:首页 > 其它

基于 Timer 的 flex 计时器

2009-05-24 21:44 507 查看
 

这几天在用 flex 做网络棋牌游戏,很多地方都要用到计时器。虽然
flex 内置有个 Timer, 但并不适合做游戏时钟,用起来怪怪的。自己实现了个易用接口,可用作时钟,倒计时等。以一个10秒到计时为例,只需创建该计时器类实例,并设置 timer
事件响应函数如下:
 
    var timer:MyTimer = new MyTimer(0, 10);
    timer.settimer.setTimerHandler(updateTimer);
 
    函数 updateTimer 中可获取倒计时秒数如下:
 
    function updateTimer(e:TimerEvent):void
    {
    var leftTime:int =
timer.leftSeconds;

    }
 
    MyTimer 类完整代码如下:

    import flash.events.TimerEvent;
    import flash.utils.Timer;
      
    public class MyTimer
    {
       private static const DELAY:uint = 1000;
       private static const SECONDS_PER_MINUTE:uint = 60;
      
       private var timer:Timer = new Timer(DELAY);
      
       public function MyTimer(minutes:uint = 0, seconds:uint = 0)
       {
           setTimer(minutes, seconds);
       }
      
       public function setTimer(minutes:uint, seconds:uint = 0):void
       {
           timer.repeatCount = seconds + minutes *
SECONDS_PER_MINUTE;
       }
      
       public function start():void
       {
           timer.start();
       }
      
       public function stop():void
       {
           timer.stop();
       }
      
       public function reset():void
       {
           timer.reset();
       }
      
       public function setTimerHandler(func:Function):void
       {
           timer.addEventListener(TimerEvent.TIMER, func);
       }
      
       public function setTimeoutsHandler(func:Function):void
       {
           timer.addEventListener(TimerEvent.TIMER_COMPLETE, func);
       }
      
       public function get currentMinutes():uint
       {
           return calculateMinutes(timer.currentCount);
       }
      
       public function get currentSeconds():uint
       {
           return calculateSeconds(timer.currentCount);
       }
      
       public function get leftMinutes():uint
       {
           return calculateMinutes(leftCount);
       }
      
       public function get leftSeconds():uint
       {
           return calculateSeconds(leftCount);
       }
      
       private function get leftCount():uint
       {
           return timer.repeatCount - timer.currentCount;
       }
      
       private function calculateMinutes(count:int):uint
       {
           return count / SECONDS_PER_MINUTE;
       }
      
       private function calculateSeconds(count:int):uint
       {
           return count % SECONDS_PER_MINUTE;
       }
    }
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息