我在创建if
语句时遇到问题。不明白为什么它不起作用所以希望一些新鲜的眼睛可能有所帮助!
我有一个计时器:
var delayTimer:Timer = new Timer(9000,1);
另一个框架上的函数
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timesUp);
function timesUp(evt:TimerEvent):void
{
if (delayTimer.currentCount == 9)
{
trace.("which it does")
incorrect.stop();
timesup.play();
}
else
{
incorrect.play();
timesup.stop();
}
}
我的示踪剂似乎没有增加,所以显然我的功能出了问题。 incorrect
和timesup
都是我需要在计时器= 9时播放的影片剪辑。因此,如果计时器用完,它将播放影片剪辑times up
而不是incorrect
。
我有一些其他的if else语句使用相同的结构但是有效,所以我对此感到有些困惑。
答案 0 :(得分:2)
Timer.currentCount
“[t]自定时器开始以零点开始后总计被触发的次数”。正如您在构造函数中指定的那样,计时器重复一次,currentCount
永远不会达到9的计数。
您可能想要做的是在计时器实际耗尽时,即在9000毫秒的延迟之后简单地触发。这正是TIMER
事件的作用。当延迟结束并且计时器触发时它将触发。在您的情况下,事件将触发一次,因为您指定计时器仅运行一次(它将在currentCount
为0
时触发一次)。 TIMER_COMPLETE
事件将在所有重复结束后触发一次,在您的情况下,直接在TIMER
事件被触发后。
回应你的评论,我就是这样做的(以及我如何理解你的目的):
var delayTimer:Timer = new Timer(9000, 1);
delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timesUp);
function timesUp (evt:TimerEvent):void
{
// after the timeout
incorrect.stop();
timesup.play();
}
// start the timer
delayTimer.start();
// start the animation, that occurs while the timer runs
incorrect.play();
timesup.stop();