在动作脚本中循环一个函数

时间:2013-12-09 19:50:28

标签: actionscript-3 flash loops

大家好我已经尝试了几个小时,但是我仍然无法循环这个功能,至少我想重复它5次,但它只循环一次,我尝试使用for循环,而,并做,但仍然不会循环

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 个答案:

答案 0 :(得分:1)

尝试在eventlistener函数中删除myTimer.stop(),因为该函数调用在调用后会停止整个Timer对象。

另外,在创建Timer时,可以在Constructor Paramters中为它提供一个重复计数器。

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