Actionscript 3 动作脚本3计时器未停止
好的,所以我是一个非常业余的AS3程序员。我有一个计时器设置,45秒后它应该移动到场景6,但是如果它调用hitTestObject,当场景重新加载时,它应该停止并从0重新加载。编辑:我知道这段代码可能真的很糟糕,我也在学习如何修复这段代码的技巧。这是我的密码:Actionscript 3 动作脚本3计时器未停止,actionscript-3,timer,Actionscript 3,Timer,好的,所以我是一个非常业余的AS3程序员。我有一个计时器设置,45秒后它应该移动到场景6,但是如果它调用hitTestObject,当场景重新加载时,它应该停止并从0重新加载。编辑:我知道这段代码可能真的很糟糕,我也在学习如何修复这段代码的技巧。这是我的密码: var myTimer:Timer = new Timer(1000, 1); // 1 second myTimer.addEventListener(TimerEvent.TIMER, onEnterFrame); myTimer.
var myTimer:Timer = new Timer(1000, 1); // 1 second
myTimer.addEventListener(TimerEvent.TIMER, onEnterFrame);
myTimer.start();
{MAIN FUNCTION}
function onEnterFrame(e:Event):void {
var startTime:int=getTimer();
var currentTime:int=getTimer();
trace(currentTime);
if (currentTime>45000){
gotoAndStop(1, "Scene 6");
}
}
我的问题是,当计时器碰到测试对象时,它会一直运行,所以当场景3重新加载时,计时器会一直运行。因此,无论你死了多少次,你只需要玩45秒。应该是,一旦您死亡,当您重新加载场景3时,计时器将重新加载。关于我能做什么有什么想法吗?希望这有助于:
var myTimer:Timer;
function resetTimer():void
{
// check if timer already initialize
if(myTimer != null)
{
// just reset
myTimer.stop();
myTimer.reset();
}
else
{
// initialize timer and set a 45 sec delay;
myTimer = new Timer(45*1000,1);
myTimer.addEventListener(TimerEvent.TIMER, handleTimerTick);
}
myTimer.start();
}
function handleTimerTick(event:TimerEvent):void
{
// stop and null timer;
myTimer.stop();
myTimer.removeEventListener(TimerEvent.TIMER, handleTimerTick);
myTimer = null;
// goto my 6th scene
gotoAndStop(1, "Scene 6");
}
// whenever a hit test is performed and a timer reset is needed just call
resetTimer();
在不知道每个侦听器的回调方法的情况下,如何从不同的计时器中删除EventListener?@zonabi您能详细说明您的问题吗?恐怕我不明白。万一你说“为什么我删除计时器处理器中的事件侦听器”,请考虑1。计时器在第一次触发2后停止。计时器在任何情况下都只会触发处理程序方法一次(请参见计时器构造函数)3。你指的是哪一个“回调”函数?好吧,它最终不是一个问题,因为各种计时器调用的函数最终都是相同的。但我们想知道,是否有计时器调用不同的方法,是否有一种方法可以删除所有事件侦听器,而不管它们调用什么方法(因为removeEventListener要求您将该方法作为参数放入)。如果它仍然没有意义,那就忘了它吧!thanks@zonabi这是不可能做到你所要求的,我也不确定,但我认为这样做是一种不好的做法。您仍然可以使用“.hasEventListener(…)”方法并检查是否有特定的侦听器。