Flex Timer 定時器

flash.util.Timer類

    flash.util.Timer類允許通過添加時間事件或延時來調用方法。通過Timer構造器創建實例對象,傳遞一個毫秒數字作爲構造參數作爲間隔時間,下面的例子實例化一個Timer對象每個1秒鐘發出事件信號: 

   

var  timer.Timer  =   new  Timer( 1000 ); 

 

    一旦創建了Timer實例,下一步必須添加一個事件監聽器來處理髮出的事件,Timer對象發出一個falsh.event.TimerEvent事件,它是根據設置的間隔時間或延時時間定時發出。下面的代碼定義了一個事件監聽,調用onTimer()方法作爲處理函數: 
    

timer.addEventListener(TimerEvent.TIMER, onTimer); 

    
function  onTimer(event:TimerEvent): void

         trace(
" on timer " ); 

    } 

 



    Timer對象不會自動開始,必須調用start()方法啓動: 

 timer.start(); 

 


    默認情況下只有調用stop()方法纔會停下來,不過另一種方法是傳遞給構造器第二個參數作爲運行次數,默認值爲0即無限次,下面的例子設定定時器運行5次: 

  var  timer:Timer  =   new  Timer( 1000 5 ); 

 


    下面的代碼設定定時器延時5秒執行deferredMethod()方法: 

   

var  timer:Timer  =   new  Timer( 5000 1 ); 

timer.addEventListener(TimerEvent.TIMER, deferredMethod); 

timer.start(); 

 





Flex中Timer用法一例:計時器

 

ExpandedBlockStart.gif代碼
<? xml version = " 1.0 "  encoding = " utf-8 " ?>     
< mx:Application xmlns:mx = " http://www.adobe.com/2006/mxml "     
        layout
= " vertical "     
        verticalAlign
= " middle "     
        backgroundColor
= " white "     
        creationComplete
= " init() "  viewSourceURL = " srcview/index.html " >     
  
    
< mx:Script >     
        
<! [CDATA[    
            import flash.utils.Timer;    
            import flash.events.TimerEvent;    
  
            private const MIN_MASK:String 
=   " 00 " ;    
            private const SEC_MASK:String 
=   " 00 " ;    
            private const MS_MASK:String 
=   " 000 " ;    
            private const TIMER_INTERVAL:
int   =   10 ;    
  
            private 
var  baseTimer: int ;    
  
            private 
var  t:Timer;    
  
            private 
function  init(): void  {    
                t 
=   new  Timer(TIMER_INTERVAL);    
                t.addEventListener(TimerEvent.TIMER, updateTimer);    
            }    
  
            private 
function  updateTimer(evt:TimerEvent): void  {    
                
var  d:Date  =   new  Date(getTimer()  -  baseTimer);    
                
var  min:String  =  (MIN_MASK  +  d.minutes).substr( - MIN_MASK.length);    
                
var  sec:String  =  (SEC_MASK  +  d.seconds).substr( - SEC_MASK.length);    
                
var  ms:String  =  (MS_MASK  +  d.milliseconds).substr( - MS_MASK.length);    
                counter.text 
=  String(min  +   " : "   +  sec  +   " . "   +  ms);    
            }    
  
            private 
function  startTimer(): void  {    
                baseTimer 
=  getTimer();    
                t.start();    
            }    
  
            private 
function  stopTimer(): void  {    
                t.stop();    
            }    
        ]]
>     
    
< / mx:Script>    
  
    
< mx:ApplicationControlBar dock = " true " >     
        
< mx:Button label = " Start timer "  click = " startTimer() "   / >    
         < mx:Button label = " Stop timer "  click = " stopTimer() "   / >    
     < / mx:ApplicationControlBar>       
  
    
< mx:Label id = " counter "  fontSize = " 96 "   / >    
  
< / mx:Application>   

 

 

效果圖:





Flex中Timer用法一例:上傳文件(用時)計時器

 

ExpandedBlockStart.gif代碼

<? xml version = " 1.0 "  encoding = " utf-8 " ?>  
< mx:Application xmlns:mx = " http://www.adobe.com/2006/mxml "  
        layout
= " vertical "  
        verticalAlign
= " middle "  
        backgroundColor
= " white "  
        creationComplete
= " init(); " >  
  
    
< mx:Script >  
        
<! [CDATA[ 
            import flash.net.FileReference; 
            import flash.net.URLRequestMethod; 
            import mx.controls.Alert; 
            import mx.utils.StringUtil; 
  
            private 
var  fileRef:FileReference; 
            private 
var  urlVars:URLVariables; 
            private 
var  urlReq:URLRequest; 
            private 
var  startTimer:Number; 
            private 
var  timer:Timer; 
  
            private 
function  init(): void  { 
                fileRef 
=   new  FileReference(); 
                fileRef.addEventListener(Event.SELECT, fileRef_select); 
                fileRef.addEventListener(Event.COMPLETE, fileRef_complete); 
                fileRef.addEventListener(IOErrorEvent.IO_ERROR, fileRef_ioError); 
  
                urlVars 
=   new  URLVariables(); 
                urlVars.userID 
=   94103
                urlVars.fpVersion 
=  flash.system.Capabilities.version; 
  
                urlReq 
=   new  URLRequest(); 
                urlReq.method 
=  URLRequestMethod.POST; 
                urlReq.data 
=  urlVars; 
                urlReq.url 
=   " http://localhost:8300/fileref/uploader.aspx "
  
                timer 
=   new  Timer( 100 ); 
                timer.addEventListener(TimerEvent.TIMER, onTimer); 
            } 
  
            private 
function  onTimer(evt:TimerEvent): void  { 
                lbl.text 
=  String(getTimer()  -  startTimer)  +   "  ms "
            } 
  
            private 
function  start(): void  { 
                fileRef.browse(); 
            } 
  
            private 
function  fileRef_select(evt:Event): void  { 
                fileRef.upload(urlReq); 
                startTimer 
=  getTimer(); 
                timer.start(); 
            } 
  
            private 
function  fileRef_complete(evt:Event): void  { 
                Alert.show(evt.toString(), evt.type); 
                timer.stop(); 
            } 
  
            private 
function  fileRef_ioError(evt:IOErrorEvent): void  { 
                Alert.show(evt.text, evt.type); 
                timer.stop(); 
            } 
        ]]
>  
    
< / mx:Script> 
  
    
< mx:Button label = " upload "  click = " start(); "   /
     < mx:Label id = " lbl "   /
  
< / mx:Application>

 

 

效果圖:
 

轉載於:https://www.cnblogs.com/qiantuwuliang/archive/2010/04/09/1708026.html