Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 动作脚本3计时器未停止_Actionscript 3_Timer - Fatal编程技术网

Actionscript 3 动作脚本3计时器未停止

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.

好的,所以我是一个非常业余的AS3程序员。我有一个计时器设置,45秒后它应该移动到场景6,但是如果它调用hitTestObject,当场景重新加载时,它应该停止并从0重新加载。编辑:我知道这段代码可能真的很糟糕,我也在学习如何修复这段代码的技巧。这是我的密码:

 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(…)”方法并检查是否有特定的侦听器。