清理setInterval |
| 作者:佚名 来源:闪吧 作者: holybozo 更新:2007-1-13 20:57:30 错误报告 我要投稿 |
setInterval很不错,可以完全代替onEnterFrame,但是使用起来却有很多需要注意的地方
比如要用updateAfterEvent,强制刷屏 还有要记得用clearInterval(id);来停止掉setInterval,如果要在停止的地方忘记地址了,那是很恐怖的^^"
但是要当程序一大,到处都是setInterval的时候(当然这样的程序也不好),你会为了找setInterval的id在哪里..而忙呼
注意过id的人都知道id是一个number,在你调用setInterval的时候会返回一个number,而这个number会逐加,很像addListener中的_listener数组的length
那么一个停掉所有setInterval的笨办法
MAX = 1000; for(var i=0;i<MAX;i++){ clearInterval(i); } 定义一个足够大的数字,然后慢慢clear,这么做就可以停止掉所有的setInterval了,当然如果你使用了超过1000个不同的setInterval(- -||)那还会出掉问题 所以最好的办法
var tmpID:Number = setInterval(function(){},10); while(--tmpID > 0) clearInterval(tmpID); 先用setInterval建立一个空函数,这样tmpID就会得到一个目前所拥有的setInterval的个数,然后用while循环一次性搞定就可以了^^" 简单吧,这样,你在哪里用过setInterval都不要紧,因为我想flash内置的setInterval函数,一定有一个类似addListener中的_listener的数组,然后返回数组的长度 那么强化一下clearAll()方法
function clearAll(Void):Void { // others clear statement var tmpId:Number = setInterval(function () {}, 10); while (--tmpId>0) clearInterval(tmpId); } //////////////////////////////////////////////// // 测试程序 function A(){trace("A");} function B(){trace("B");} function C(){trace("C");} setInterval(A,50); setInterval(B,50); setInterval(C,50);
setInterval(clearAll,1000);
function clearAll(Void):Void { var tmpId:Number = setInterval(function () {}, 10); while (--tmpId>0) clearInterval(tmpId); }
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |