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 " );
}
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();
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>
< 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>
< 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>
效果圖: