转至繁体中文版     | 网站首页 | 文章中心 | 下载中心 | 图片中心 | 笑话频道 | 教程频道 | 会员中心 | 雁过留声 | 
最新公告:     "MinTao学以致用网"欢迎您的光临,你的支持便是我们的动力,欢迎广大网友和各界人士亲临指导,你们的一个小小的建议便是我们发展的开路石!  [MinTao  2007年9月5日]        
您现在的位置: MinTao学以致用网 >> 文章中心 >> 电子课堂 >> 电脑应用 >> 电脑技术 >> 文章正文
专题栏目
更多内容
最新推荐 更多内容
相关文章
没有相关文章
更多内容
IntervalManager的扩展           ★★★
IntervalManager的扩展
作者:佚名 文章来源:蓝色理想 点击数: 更新时间:2006-5-24

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

代码拷贝框