嘿伙计们,所以我在创建多个级别时遇到了一些麻烦。我不太确定我是否以正确的方式创建它们,但我有一个玩家和goal_1、goal_2 等。基本上当玩家hitTestObject 的goal_1 时,我希望它去一个名为level_2 的新函数,然后在那个hitTest 之后进入level_3。所以 Level_1 工作得很好,hitTest 工作正常,它初始化了 level_2 但是当我再次尝试 hitTest 玩家和 goal_2 甚至是 goal_1 时,它只是通过它而不做任何事情。
我现在明白了 level_2 并不是像 level_1 那样在每一帧都被调用,因为它不是 Enter_Frame 侦听器的一部分。但我不知道如何让多个 Enter Frame 事件同时运行。如果那甚至是创建多个级别的正确方法。
你能看到我能做些什么来让它发挥作用吗?
private function gameLoop(e:Event):void
{
playerShoot();
playerControl();
playerStageBoundaries();
checkEndGameCondition();
checkPlayerOffScreen();
level_1();
}
private function level_1():void
{
if(player.hitTestObject(mGoal_1))
{
trace("Goal_1 Collision");
//Remove button for constant movement
btnShootPlayer = false;
mGoal_1.destroyGoal_1();
player.destroyPlayer();
//Update High Score text
nScore += 10;
updateHighScore();
stage.removeEventListener(Event.ENTER_FRAME, gameLoop);
//Update level
nLevel++;
updatePlayerLevel();
level_2();
}else
{
checkEndGameCondition();
}
}
public function level_2():void
{
stage.addEventListener(Event.ENTER_FRAME, gameLoop);
TweenMax.to(mGoal_1, 1, {y:40, repeat:-1, yoyo:true, ease:Power0.easeInOut});
trace("Level_2 Initiated");
//Keep Text Scores initiated
updateHighScore();
updatePlayerLives();
player = new mPlayer();
stage.addChild(player);
player.x = (stage.stageWidth / 2) - 280;
player.y = (stage.stageHeight / 2);
mGoal_1 = new goal_1();
stage.addChild(mGoal_1);
mGoal_1.x = (stage.stageWidth / 2) + 300;
mGoal_1.y = (stage.stageHeight) - 35;
if (player.hitTestObject(mGoal_1))
{
trace("Level 2 Hit test works!");
nScore += 10;
updateHighScore();
}
}