MultiTimer 用法

发表评论 阅读评论

不好意思,只写了类实现没写用法,现写了一个示例,限于篇幅,另写一篇。
欲了解更多MultiTimer的细节请看这里

这篇只写MultiTimer的使用。

先看MultiTimer的类公共API声明。

/**
 * MultiTimer 用法
 * 
 * 构造函数 
 * @param   delay 执行timerFunc的时间间隔,也就是completeFunc调用的精度
 * public function MultiTimer(delay:int);
 * 
 * 
 * 
 * 这个方法可以在任何时候调用
 * 添加一个事件,其实就是一个回调函数,类似于 setInterval(func, delay, args..) 里的 func,都是回调函数
 * 
 * 只有time参数是必须的, 其他参数可以设置为null,
 * 当然 completeFunc 和 timerFunc 都为null 也没什么效果的O(∩_∩)O哈哈~
 * 
 * @param   time            运行的时间, 单位:ms
 * @param   completeFunc    结束时函数
 * @param   completeArgs    结束时函数的参数
 * @param   completeThis    结束时函数的this对象, 这个参数只有在 func 不是类的成员函数时有用
 * @param   timerFunc       timer时的函数
 * @param   timerArgs       timerFunc的参数列表
 * @param   timerThis       timerFunc的this对象, 这个参数只有在 func 不是类的成员方法时有用
 * public function addTimer(time:int,
 *                          completeFunc:Function = null, completeArgs:Array = null, completeThis:Object=null, 
 *                          timerFunc:Function = null, timerArgs:Array = null, timerThis:Object = null):void;
 */

下面写个示例:

package 
{
    import com.litefeel.utils.MultiTimer;
    import flash.display.Sprite;
    import flash.utils.getTimer;

    /**
     * www.litefeel.com
     * lite3@qq.com
     * @author lite3
     */
    public class MultiTimerExample extends Sprite
    {

        private var beginTime:int;
        private var multiTimer:MultiTimer;

        public function MultiTimerExample() 
        {
            beginTime = getTimer();

            // 要先实例化才能用, 参数为 精度,相当于 new Timer(t)的t 参数
            multiTimer = new MultiTimer(100);

            /**
             * 添加一个事件,其实就是一个函数,这个函数会以回调的方式调用
             * 支持 传入参数
             */ 
            multiTimer.addTimer(1000, completeHandler, ["function1", 1000], null, timerHandler, ["function1", 1000]);
            multiTimer.addTimer(2000, null, null, null, timerHandler, ["function2", 2000]);
            multiTimer.addTimer(3000, completeHandler, ["function3", 3000]);

        }

        private function timerHandler(name:String, time:int):void
        {
            trace("timerHandler!这是:", name, "\t持续时间:", time);
        }

        private function completeHandler(name:String, time:int):void
        {
            trace("completeHandler!这是:", name, "\t持续时间:", time, "\t实际用时:", getTimer() -beginTime);
            if ("function3" == name)
            {
                time = getTimer();
                // 不同的时间添加事件
                multiTimer.addTimer(1000, null, null, null, timerHandler, ["重启后的function3", 1000]);
            }
        }

    }

}

运行后,您会看到类似下面的输出

timerHandler!这是: function1  持续时间: 1000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function1  持续时间: 1000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function1  持续时间: 1000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function1  持续时间: 1000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function1  持续时间: 1000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function1  持续时间: 1000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function1  持续时间: 1000
completeHandler!这是: function1   持续时间: 1000  实际用时: 1102
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function2  持续时间: 2000
timerHandler!这是: function2  持续时间: 2000
completeHandler!这是: function3   持续时间: 3000  实际用时: 3100
timerHandler!这是: 重启后的function3  持续时间: 1000
timerHandler!这是: 重启后的function3  持续时间: 1000
timerHandler!这是: 重启后的function3  持续时间: 1000
timerHandler!这是: 重启后的function3  持续时间: 1000
timerHandler!这是: 重启后的function3  持续时间: 1000
timerHandler!这是: 重启后的function3  持续时间: 1000
标签: , ,

  1. lite3 | | #1

    第一个参数是必须的,其他参数都是可选的啊

  2. laan | #2

    之前也实现过。如果单一,但是参数实在太多了。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
回到顶部