TimeTrigger

by t2421
指定した秒数で関数を発動するクラス
♥0 | Line 63 | Modified 2012-09-02 16:03:30 | MIT License
play

ActionScript3 source code

/**
 * Copyright t2421 ( http://wonderfl.net/user/t2421 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/vmml
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class TimeTriggerMain extends Sprite {
        private var timeTrigger:TimeTrigger;
        public function  TimeTriggerMain() {
            addEventListener(Event.ADDED_TO_STAGE,add);
                  
        }
        
        private function add(e:Event):void{
            
            timeTrigger = new TimeTrigger(1,function():void{trace("hogehoge")});
            changeFrameRate(60);
            timeTrigger.start();
            trace("start");
            this.addEventListener(Event.ENTER_FRAME,loop);
        }
        
        private function loop(e:Event):void{
            //trace("looop");
        }


        
        private function changeFrameRate(rate:Number):void{
            stage.frameRate = rate;
            timeTrigger.frameRate = rate;
        }

    }
}
import flash.display.Sprite;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.utils.Timer;


class TimeTrigger extends  Sprite{
    private var _interval:Number = 1;
    private var _callback:Function;
    private var _count:uint = 0;
    private var _frameRate:uint;
   
    public function TimeTrigger(interval:Number=1,callback:Function=null){
        _interval = interval;
        _callback = callback;
    }

    public function setParams(interval:Number=1,callback:Function=null):void{
        _interval = interval;
        _callback = callback;
        
    }
    
    public function reset():void{
        this.removeEventListener(Event.ENTER_FRAME,loop);
        _count = 0;
    }

    public function pause():void{
        this.removeEventListener(Event.ENTER_FRAME,loop);
    }
    
    public function start():void{
        trace("startTimer");
        this.addEventListener(Event.ENTER_FRAME,loop);
    }

    private function loop(e:Event):void{
        
        if(_count == _frameRate*_interval){
            _callback();
            _count=0;
        }else{
            _count++;
        }

    }
    
    public function set frameRate(rate:uint):void{
        _frameRate = rate;
    }
}