【永恒的瞬間】
          ?Give me hapy ?

          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 閱讀(800) 評論(0)  編輯  收藏 所屬分類: flex2.0
          主站蜘蛛池模板: 阳曲县| 八宿县| 昌都县| 新源县| 甘泉县| 鄱阳县| 福贡县| 胶州市| 鄂托克旗| 萨嘎县| 镇宁| 运城市| 寿光市| 博白县| 永顺县| 于都县| 光泽县| 长垣县| 肇东市| 安吉县| 大同市| 沾益县| 竹山县| 九江市| 出国| 平顺县| 梁平县| 霍山县| 天峻县| 绿春县| 商都县| 新龙县| 疏附县| 逊克县| 六安市| 壤塘县| 成安县| 响水县| 白山市| 无锡市| 镶黄旗|