转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 电脑应用 >> 电脑技术 >> 正文
IntervalManager的扩展         ★★★

IntervalManager的扩展

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1185 更新时间: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

代码拷贝框