我有一个让敌人攻击玩家的计时器。敌人的攻击从玩家的健康中减去5。当等级加载(timerLevel)游戏开始时。当游戏开始时(timerGame),敌人的攻击计时器启动。当我杀死敌人时,敌人的攻击计时器停止,游戏计时器停止,并且等级计时器再次启动。它进入了一个新的水平。下一级再次添加敌人并启动游戏计时器。只是现在,攻击现在减去10而不是5.当游戏检查等级时,如何让计时器打勾一次?
请原谅邋code的代码,这仍然是一个菜鸟。
敌人类:
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();
}
}
答案 0 :(得分:1)
你是否关心移除你的TimerEvent听众,因为如果你不这样做,就敌人而言,你可以让先前敌人的计时器击中你的玩家和新玩家。
当您不再需要时,请小心阻止您的计时器并移除您的听众。
希望有所帮助