2016-06-13 189 views
0

我目前正在创建一个游戏,需要倒数计时器在60秒开始,但是计时器持续4秒后自行循环。如何停止循环倒计时计时器帧循环Actionscript 3.0

下面是我在Adobe动画中使用的代码和框架完整

import flash.utils.Timer; 

var count:Number = 60; 
var myTimer:Timer = new Timer(1000,count); 
myTimer.addEventListener (TimerEvent.TIMER, countdown); 
myTimer.start(); 

function countdown(event:TimerEvent) : void 
{ 
Timer_txt.text = String ((count)-myTimer.currentCount + " seconds"); 
} 
+0

你能否在你的问题中增加一些细节?你在'Timer_txt'元素中看到了什么输出,以及你期望看到什么?另外,你在哪里定义了这段代码 - 它是在一个时间轴上,在一个ENTER_FRAME监听器中,还是在一个类的某个地方? – Brian

+0

当我运行动画时,Timer_txt显示“60秒”。但是一旦它达到“56秒”,倒数计时器又循环回60秒。我创建了一个游戏,要求倒数计时器将播放时间限制为60秒,并通过编码this.gotoAndPlay()来循环帧。但是一旦我添加了倒数计时器,它也会循环。我的问题是如何让帧定时器继续倒计时帧循环?如果有人能帮助我,我会很感谢你。 – aamion

+0

你知道如何使用Document类吗?在时间线上放置代码时,每个关键帧都会分别运行。如果你的计时器在时间线上,那么你的计时器将会重新创建(因为我猜测你的帧会累加4秒?)。但是,如果将它放在Document类中,则循环的帧不会再影响计时器。 – Brian

回答

0

您正在使用不正确的构造方法时,它不断地循环。看API文档(here)后,我发现

myTimer: Timer = new Timer(1000, 60); 

将创建一个定时器将运行每1000毫秒的计时器,它会重复60次(然后停止工作)。这显然不是你所追求的。如果我理解正确的话,你想有一个计时器数到60,然后重置为0。所以,我们要做的是:

myTimer: Timer = new Timer(1000); 

是所有你需要的构造函数。但是现在你需要添加一些东西,在计时器滴答60次后重置定时器为0。对您的count变量使用支票。像这样:

if (myTimer.currentCount >= count) 
{ 
    myTimer.reset(); 
} 

我从来没有这样做,但它看起来应该工作。然后,您可以让您的计时器文本字段更新每个计时器事件,类似于您设置的方式。