0

我有一个计时器让我的敌人攻击玩家。敌人的攻击会从玩家的生命值中减去 5。当关卡加载(timerLevel)时,游戏开始。当游戏开始时(timerGame),敌人的攻击计时器开始计时。当我杀死敌人时,敌人的攻击计时器停止,游戏计时器停止,等级计时器再次启动。它进入下一个层次。下一个级别再次添加敌人并启动游戏计时器。只是现在,攻击现在减去 10 而不是 5。我怎样才能让计时器在游戏检查等级时滴答一次?

原谅草率的代码,这仍然是菜鸟。

敌人等级:

public var enemyAttackTimer:Timer = new Timer(8000);
enemyAttackTimer.addEventListener(TimerEvent.TIMER, timerenemyattack);

        function timerenemyattack(event:TimerEvent)
        {
            if (Main.tileset[k].hitTestObject(Main.player.visionPoint))
            {
               Main.player -= 5
            }
        }

主类:

    private var onGameTimer:Timer = new Timer(1000);// For checking the Game
    private var onLevelTimer:Timer = new Timer(500, 1);//For checking the Level

    levelNumber = 1;
    onGameTimer.addEventListener(TimerEvent.TIMER, timerGame);
    onLevelTimer.addEventListener(TimerEvent.TIMER, timerLevel);
    onLevelTimer.start();

    //CREATE THE LEVEL AND ADD ENEMY/PLAYER
    function timerLevel(event:TimerEvent)
    {

        addChild(player);
        if (level.levelNumber == 1)
        {

            addChild(enemy)
            enemies = [enemy];

            enemy.enemyMoveTimer.start();
                enemy.enemyAttackTimer.start();

            onGameTimer.start();

        }
        if (level.levelNumber == 2)
        {

            addChild(enemy);
            addChild(enemy2);
            enemies = [enemy, enemy2];

            enemy.enemyMoveTimer.start();
            enemy.enemyAttackTimer.start();

            enemy2.enemyMoveTimer.start();
            enemy2.enemyAttackTimer.start();

            onGameTimer.start();
        }
        if (level.levelNumber == 3)
        {

            addChild(enemy);
            addChild(enemy2);
            enemies = [enemy, enemy2];

            enemy.enemyMoveTimer.start();
            enemy.enemyAttackTimer.start();

            enemy2.enemyMoveTimer.start();
            enemy2.enemyAttackTimer.start();
            onGameTimer.start();
        }
    }
    function timerGame(event:TimerEvent)
    {
    if (enemies.length == 0)
    {
                trace("NEXT LEVEL");
        var i:int = cellContainer.numChildren;
            while(i--)
        {
                cellContainer.removeChildAt(i);
        }
        levelNumber += 1;

        onLevelTimer.start();

        onGameTimer.stop();
    }

}
4

1 回答 1

1

您是否关心删除您的 TimerEvent 侦听器,因为如果您不这样做,例如在敌人身上,您可以让前一个敌人的计时器击中您的玩家和新的敌人。
当您不再需要它们时,请小心停止您的计时器并移除您的听众。

希望有帮助

于 2013-10-19T10:53:03.170 回答