动作脚本3-AS3敌人的速度加倍



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

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

以下是用于启动关闭的功能

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();
    }

这是被删除的勾选事件,它调用怪物的更新功能

    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,但怪物的移动速度仍然是原来的两倍,每次你死后从头开始,速度都会一次又一次地翻倍,知道为什么吗?

感谢您的阅读和帮助

画布

    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();

最新更新