2013-12-09 45 views
0

嗨,大家好我一直在嘗試這個好幾個小時,但是我仍然無法循環這個函數,至少我想重複5次,但它只循環一次,我試過了使用循環,同時,做一段時間,但它仍然不會循環在動作腳本中循環一個函數

var myTimer:Timer = new Timer(1000); // 1 second 
myTimer.addEventListener(TimerEvent.TIMER, runMany); 

myTimer.start(); 

function runMany(event:TimerEvent):void { 
myTimer.stop(); 
myTimer.start(); 
trace("runMany() called @ " + getTimer() + " ms"); 

if(getTimer() > 3000) 
{ 
    //random call of captopn and costumer in 3 seconds 
    myTimer.stop(); 

    capsChoice = randomRange(1, 3);//random caption 
    costumChoice = randomRange(1, 3);//randomcostum 

    //condition in caption 
    more codes in here………... 

} 

}

回答

1

嘗試在事件監聽功能刪除myTimer.stop(),因爲該函數調用停止整個Timer對象一旦被調用。

此外,當您創建一個計時器時,您可以在構造器參數中給它一個重複計數器。

var myTimer:Timer = new Timer(1000, 5); // 1 second, repeat 5 times 
myTimer.addEventListener(TimerEvent.TIMER, runMany); 

myTimer.start(); 

function runMany(event:TimerEvent):void { 

//... 

這將在執行之間調用該函數5次,延遲1秒。

還有一點要記住,你只需要啓動定時器一次,如果每次在偵聽器函數中調用myTimer.start(),它都會嘗試循環執行5次執行,從而導致一個無限循環。

參見:AS3 Documentation Timer

Working with the Timer Class