相信大家對setInterval方法肯定非常熟悉,但不少人對其缺乏深入的了解,致使當一個flash里有多個setInterval的時候就容易混淆,該清除的間隔lID沒有清除,不該清除的時候卻清除了。對于setInterval的語法我就不贅述,很多文章都有詳細說明,下面來說一下 setInterval的幾個重點。
1、setInterval和clearInterval都是全局函數(shù),也就是_global.setInterval()和_global.clearInterval()。
這一點大家應該都知道,但是可能并沒有特別注意。不過這點對我們理解他們非常重要。setInterval的返回值是一個間隔lID(數(shù)字),所以這個間隔lID也是全局的。比如下面的代碼:
var rootID=setInterval(_root,"test",500,"rootID"); function test(arg){ trace(arg); }
我們用clearInterval(rootID)和用clearInterval(1)的作用是一樣的。
2、每一次調(diào)用setInterval,就會返回一個間隔lID,這個ID數(shù)值為全局setInterval的調(diào)用次數(shù)。
比如下面的代碼:
var rootID=setInterval(_root, "test", 500, "rootID"); btn1.onPress=function(){ setInterval(_root, "test", 500, "btn1_ID"); } btn2.onPress=function(){ setInterval(_root, "test", 500, "btn2_ID"); } function test(arg) { trace(arg); }
在這個例子里,我們可以用clearInterval(1)來清除間隔rootID。假如我們先點擊btn1再點擊btn2,那么就可以用 clearInterval(2)來清除點擊btn1所產(chǎn)生的間隔ID,而用clearInterval(3)來清除點擊btn2所產(chǎn)生的間隔ID。相反,如果我們先是點擊btn2再點擊btn1,那么clearInterval(2)則是清除點擊btn2所產(chǎn)生的間隔ID.
3、給間隔lID添加標識符 在實際編程中,用上面的clearInterval(數(shù)字)這樣的方式固然可以清除間隔ID,但是一旦ID過多,我們就會無法識別該清除哪個ID。因此給間隔lID添加標識符就顯得非常重要。但是必須把他分配到一個對象的成員變量中。 比如下面的代碼:
newtest(); function newtest(){ var newID=setInterval(_root,"test",500,"btn2_ID"); } function test(arg){ trace(arg); }
這樣的標識方法就是錯誤的,因為testID是一個局部變量,僅作用于new方法內(nèi)。因而無法在其他地方用clearInterval(newID)來清除此間隔。而去掉前面的var就可以了(此時newID是_root的一個成員變量)。
4、增加一個清除loadMovieNum加載進來swf的間隔ID的例子:
在IntervalID2.swf文件里的有個間隔ID:
var IntervalID2=setInterval(_root,"test",1000,"IntervalID2"); function test(arg){ trace(arg);; }
在IntervalID1.swf里:
loadMovieNum("IntervalID2.swf",1) btn1.onPress = function(){ clearInterval(_level1.IntervalID2) IntervalID1=setInterval(_root,"test",2000,"IntervalID1"; }; btn2,onPress = function(){ clearInterval(2) //clearInterval(IntervalID1) }; function test(arg){ trace(arg); }
在此例中,如果我們先點擊btn1再點擊btn2,那么2個間隔ID都會刪除,而如果先點擊btn2,那么IntervalID1是沒有清除的。明白上面三點后,這些應該就是顯而易見的了。
總結(jié):了解了上面幾個重點后,我想使用setInterval方法就會一清二白了,不會怕setInterval了而clearInterval不了的情況了。如有錯誤,敬請指正。
經(jīng)典論壇討論: http://bbs.blueidea.com/thread-2740196-1-1.html
本文鏈接:http://www.95time.cn/tech/multimedia/2007/4680.asp
出處:藍色理想
責任編輯:elesa
◎進入論壇Flash專欄版塊參加討論
|