×

了解setInterval

作者:andy0012017.10.12来源:Web前端之家浏览:7777评论:0
关键词:setInterval

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); 
}


您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://www.jiangweishan.com/article/js11111111111112.html

网友评论文明上网理性发言 已有0人参与

发表评论: