actionscript-3 - AS3敌人双倍速度?

标签 actionscript-3 flash air

我使用 AS3 和 Air 3.2 for Android 在 flash CS6 中制作了一个游戏,现在这个游戏你会进入不同的菜单,当你死后,它会返回主菜单并显示你的分数,现在当你选择一个新的角色再次通关,怪物速度加倍!?!?

知道为什么吗?我可以给你一段代码,但我真的不确定问题出在哪一部分?会是一个没有被删除的事件监听器吗?

这是被调用来启动关卡的函数

public function startLevel1( navigationEvent:NavigationEvent ):void
    {
        //classSelect = null;
        removeChild( classSelect );
        levelManager = new LevelManager( heroGra, hero);
        addChild( levelManager );
        levelManaOn = true;

        gameTimer = new Timer( 30 );
        //On every 30ms we call apon moveEvent function
        gameTimer.addEventListener( TimerEvent.TIMER, tick );
        gameTimer.start();

    }

这是被删除的tick事件,它调用怪物的更新函数

    public function tick( timerEvent:TimerEvent ):void
    {
        if(levelManaOn == true)
        {
            levelManager.update();
            if(hero.hp <= 0)
            {
                trace("DEAD");
                onScoreState();
                levelManaOn = false;
                removeEventListener( TimerEvent.TIMER, tick );
            }
        }
    }

从tick事件中,它将调用此函数

public function onScoreState( ):void
    {
        scoreState = new ScoreState();
        scoreState.waveCompletedScore.text = levelManager.level.score.toString();
        //
        scoreState.addEventListener( NavigationEvent.ENDGAME, backMainMenu );
        addChild( scoreState );
        removeChild( levelManager );
    }

这会删除levelManager,但怪物仍然以双倍的速度移动,每次你死后从头开始时,速度都会再次加倍,知道为什么吗?

感谢您的阅读和帮助

Canvas

最佳答案

    gameTimer = new Timer( 30 );
    //On every 30ms we call apon moveEvent function
    gameTimer.addEventListener( TimerEvent.TIMER, tick );
    gameTimer.start();

我打赌这段代码会再次执行,而第一个计时器不会被删除。

您需要调用 removeEventListener( TimerEvent.TIMER, tick ); 作为 gameTimer 对象上的方法。像这样:

gameTimer.removeEventListener(TimerEvent.TIMER, tick );

确保保留对 gameTimer 的引用。在删除监听器之前,还要执行 gameTimer.stop();

关于actionscript-3 - AS3敌人双倍速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224044/

相关文章:

apache-flex - 在 Flex 选项卡式 View 导航器之间切换

javascript - TinyMCE 限制scrollerActived 上的文本

apache-flex - 在 Adob​​e Flex 中获取用户的语言环境

ios - 正在提交 Flash Builder 4.6 应用程序到 Appstore : unsupported architecture(s): arm

actionscript-3 - 设置swf高度和宽度时视频消失

apache-flex - 用于移动设备的 MXML 和 ActionScript 之间的真正区别是什么?

actionscript-3 - 我不断从 AS3 中的 youTube API V3 收到 404

flash - AS3-声音提取到bytearray-进度处理程序

java - 有没有办法从Flash访问Java库?

air - FileStream openAsync 抛出错误 #1009