现在的位置: 首页 > 综合 > 正文

Flex Timer 定时器

2012年12月23日 ⁄ 综合 ⁄ 共 5092字 ⁄ 字号 评论关闭

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(10005); 

 

    下面的代码设定定时器延时5秒执行deferredMethod()方法: 

   

var timer:Timer = new Timer(50001); 

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>

 

 

效果图:
 

抱歉!评论已关闭.