IntervalManager, setInterval 的擴(kuò)展
主要功能: 增加了停止, 暫停 interval 功能 增加了刪除所有 interval 的方法 在每次觸發(fā) interval 的時(shí)候廣播事件跟蹤, 更高的可擴(kuò)展性 解決了函數(shù)返回值出路的問題 -0-
如何使用
// 首先準(zhǔn)備一下 array 的 prototype Array.prototype.remove = function(index) { if (index == 0){ this.shift(); } else if (index == (this.length - 1)){ this.pop(); } else if (index > 0 && index < (this.length - 1) ){ this.splice(index, 1); } } _global.ASSetPropFlags(Array.prototype, "remove", 1, 0);
// 導(dǎo)入包 import MirageSystem.utils.IntervalManager;
function test1 (arg1, arg2) { trace("scope : " + this); trace("arguments.length : " + arguments.length); for (var i in arguments) { trace("arg[" + i + "] : " + arguments[i]); } }
// test2 是帶返回值的例子 var test2ReturnValue:String; function test2 () { trace("我是 test2"); return "這里是 test2"; }
// test3 會(huì)被無限持續(xù)調(diào)用, 看看 test2ReturnValue 的改變吧 function test3 () { trace("我是 test3, test2ReturnValue 的結(jié)果是 : " + test2ReturnValue); }
function test4 () { trace("我是 test4, 現(xiàn)在暫停 test3"); intervalMgr3.pause(); }
function test5 () { trace("我是 test5, 恢復(fù) test3"); intervalMgr3.start(); }
function test6 () { trace("我是 test6, 釋放所有 interval"); IntervalManager.cleanUp();
}
function intervalMgr1_invoke (e:Object) { trace("intervalMgr1.currentCount : " + e.currentCount); } function intervalMgr1_stop (e:Object) { trace("intervalMgr1 已停止"); }
// 設(shè)置一個(gè) interval, 第 1 個(gè)例子還包括了如何設(shè)置偵聽器 var intervalMgr1:IntervalManager = IntervalManager.run(test1, 1000, ["arg1", "arg2"], true, 3, this); intervalMgr1.addEventListener(IntervalManager.INVOKE, intervalMgr1_invoke); intervalMgr1.addEventListener(IntervalManager.STOP, intervalMgr1_stop); var intervalMgr2:IntervalManager = IntervalManager.run(test2, 1500, null, false, 1, this, [this, "test2ReturnValue"]); var intervalMgr3:IntervalManager = IntervalManager.run(test3, 100); var intervalMgr4:IntervalManager = IntervalManager.run(test4, 800, null, null, 1); var intervalMgr5:IntervalManager = IntervalManager.run(test5, 1300, null, null, 1); var intervalMgr6:IntervalManager = IntervalManager.run(test6, 5000);
下面是我的運(yùn)行結(jié)果
scope : _level0 arguments.length : 2 arg[1] : arg2 arg[0] : arg1 我是 test3, test2ReturnValue 的結(jié)果是 : undefined 我是 test3, test2ReturnValue 的結(jié)果是 : undefined 我是 test3, test2ReturnValue 的結(jié)果是 : undefined 我是 test3, test2ReturnValue 的結(jié)果是 : undefined 我是 test3, test2ReturnValue 的結(jié)果是 : undefined 我是 test4, 現(xiàn)在暫停 test3 intervalMgr1.currentCount : 2 scope : _level0 arguments.length : 2 arg[1] : arg2 arg[0] : arg1 我是 test5, 恢復(fù) test3 我是 test3, test2ReturnValue 的結(jié)果是 : undefined 我是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 intervalMgr1.currentCount : 3 scope : _level0 arguments.length : 2 arg[1] : arg2 arg[0] : arg1 intervalMgr1 已停止 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test3, test2ReturnValue 的結(jié)果是 : 這里是 test2 我是 test6, 釋放所有 interval
IntervalManager.as
代碼拷貝框
[Ctrl+A 全部選擇 然后拷貝]
EventDispatcher.as 就是 mx.event.EventDispatcher -_-
例子和全部代碼下載:點(diǎn)擊下載
經(jīng)典論壇討論帖: http://www.95time.cn/bbs/NewsDetail.asp?id=2572690
出處:藍(lán)色理想
責(zé)任編輯:moby
◎進(jìn)入論壇Flash專欄版塊參加討論
|