您的位置: 首页 > 技术文档 > 多媒体制作 > IntervalManager的扩展
浅释ActionScript的代码优化 回到列表 制作V2组件mxp安装文件详解
用户名:
密 码: 忘记密码
注册会员 游客参观 论坛帮助
 IntervalManager的扩展

作者:mirycat 时间: 2006-05-24 文档类型:原创 来自:蓝色理想
浏览统计 total:609 | year:609 | Quarter:609 | Month:37 | Week:220 | today:4

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

出处:蓝色理想
责任编辑:moby

◎进入论坛Flash专栏版块参加讨论

作者文章
FLASH AS实现马赛克效果
全网 本站 论坛
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
[AI]月亮图腾进阶教程
FLASH8 FLVPlayback组件
制作图片变换效果逐帧动画
用菜单飞梭创建动态酷菜单
JS页内查找关键词的高亮显示
[VI]名仕公馆
平面设计的几个定律
中国工笔画—路径白描
共青森林公园随拍
厦门散记
栏目最新 栏目最新列表
[AI]月亮图腾进阶教程
FLASH8 FLVPlayback组件
用菜单飞梭创建动态酷菜单
JS页内查找关键词的高亮显示
中国工笔画—路径白描
打造Ajax简单相册
用flash控制全景播放
ASP操作Excel技术总结
像素坠子
风景照片变幽灵城堡

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Flash第一步系列》
《交互设计之路》
《Dreamweaver 从基础到实践》
《色彩管理》
《网页设计专家门诊》
《情感化设计》
《GUI设计禁忌》