Flex 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用法一例:计时器

 

代码
<? 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用法一例:上传文件(用时)计时器

 

代码

<? 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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值