intervalmanager, setinterval 的扩展
主要功能:
增加了停止, 暂停 interval 功能
增加了删除所有 interval 的方法
在每次触发 interval 的时候广播事件跟踪, 更高的可扩展性
解决了函数返回值出路的问题 -0-
如何使用
// 首先准备一下 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);
// 导入包
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 会被无限持续调用, 看看 test2returnvalue 的改变吧
function test3 () {
trace("我是 test3, test2returnvalue 的结果是 : " + test2returnvalue);
}
function test4 () {
trace("我是 test4, 现在暂停 test3");
intervalmgr3.pause();
}
function test5 () {
trace("我是 test5, 恢复 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 已停止");
}
// 设置一个 interval, 第 1 个例子还包括了如何设置侦听器
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);
下面是我的运行结果
scope : _level0
arguments.length : 2
arg[1] : arg2
arg[0] : arg1
我是 test3, test2returnvalue 的结果是 : undefined
我是 test3, test2returnvalue 的结果是 : undefined
我是 test3, test2returnvalue 的结果是 : undefined
我是 test3, test2returnvalue 的结果是 : undefined
我是 test3, test2returnvalue 的结果是 : undefined
我是 test4, 现在暂停 test3
intervalmgr1.currentcount : 2
scope : _level0
arguments.length : 2
arg[1] : arg2
arg[0] : arg1
我是 test5, 恢复 test3
我是 test3, test2returnvalue 的结果是 : undefined
我是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
intervalmgr1.currentcount : 3
scope : _level0
arguments.length : 2
arg[1] : arg2
arg[0] : arg1
intervalmgr1 已停止
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test3, test2returnvalue 的结果是 : 这里是 test2
我是 test6, 释放所有 interval
intervalmanager.as
代码拷贝框
[ctrl+a 全部选择 然后拷贝]
eventdispatcher.as
就是 mx.event.eventdispatcher -_-
例子和全部代码下载:点击下载
经典论坛讨论帖:
http://www.blueidea.com/bbs/newsdetail.asp?id=2572690
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器