setInterval 函數是Action Script 的全局函數,在Action Script 3.0 中它 被封裝在 flash.util 包中,詳見http://livedocs.macromedia.com/labs/1/flex/langref/migration.html, 它需要flash player 6 或以上版本的支持。
setInterval 有兩種用法:
1.? setInterval(functionName:Function, interval:Number [, param1:Object
,
param2
, ...,
paramN
])
: Number
這種使用方法是讓flash player 每隔interval (ms)時間調用functionName()這個函數,不關心這個方法是哪個對象的,后面跟傳入的參數;一般來說這些參數值用來為函數提供數據,而不是從函數里取出數據。
2.? setInterval(obj:Object, methodName:Function, interval:Number [, param1:Object
,
param2
, ...,
paramN
])
: Number
這種方法調用obj 對象中的成員方法methodName,在flex 應用中必須使用這樣的方法來實現定時調用的效果。這樣的方式就能夠,在methodName中就能夠訪問當前flex application的 成員變量或函數了。舉個例子:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application? initialize="initFunc()" xmlns:mx="http://www.macromedia.com/2003/mxml">
?<mx:Script>
?<![CDATA[
??var count:Number;
??function initFunc()
??{
???count = 60;
???setInterval(this, "countDown", 1000);
??}
??
??function countDown()
??{
???showLabel.text = count.toString() + "second to go";
???count -= 1;
???if(count == 0)
????timeUp();
??}
??
??function timeUp()
??{
???alert("Time is up");
??}
?]]>
?</mx:Script>
?<mx:Label id="showLabel"/>
</mx:Application>
如果這里使用第一種方法的話 就會出現 countDown 函數不能訪問到count 和 showLabel 這兩個變量,功能就沒法實現,雖然可以通過傳參數的方法來傳入count 和 label:
setInterval(countDown, 1000, count:Number, showLabel:mx.controls.Label);
但是這樣話 count-=1 并不起作用,所以根本不會count down。這個搞了我好久,開始沒有看到第二種用法,大家要留意。
好看一點的例子:
?function init()
?{
? var spanSec:Number=60*60 //an hour to go
? var nf:mx.formatter.NumberFormatter = new mx.formatters.NumberFormatter();
? nf.precision = 0;
??nf.rounding = "down";
?}
?function timeCountDown()
?{
? var hr:Number =parseInt(nf.format(spanSec/3600));
??var min:Number = parseInt(nf.format((spanSec - hr*3600)/60));
??var sec:Number = parseInt(nf.format(spanSec - 60*min - hr*3600));
??spanSec = spanSec - 1;
??countDownLabel.text="Time left: "+hr+":"+min+":"+sec;?
??if(spanSec == 0)
??{
???submit();
??}
??
?}
?function submit()
?{
??? //do whatever you want
?}
posted on 2007-01-12 15:44
???MengChuChen 閱讀(793)
評論(0) 編輯 收藏 所屬分類:
flex2.0