Actionscript 3 创建多个级别AS3
嘿,伙计们,我在创建多个关卡时遇到了点麻烦。我不太确定我是否用正确的方式创造了他们,但我有一个球员和目标1,目标2,等等。。基本上,当玩家命中目标时,我希望它进入一个新的函数,称为level_2,然后在命中测试后进入level_3。所以等级1很好,命中测试很好,它初始化等级2,但当我尝试再次命中玩家和目标2,甚至目标1时,它只是通过它,什么也不做 我现在了解到,级别2并不像级别1那样被每个帧调用,因为它不是Enter\u帧侦听器的一部分。但我不知道如何让多个Enter Frame事件同时运行。如果这是创建多个级别的正确方法 你能看看我能做些什么使它工作吗Actionscript 3 创建多个级别AS3,actionscript-3,hittest,Actionscript 3,Hittest,嘿,伙计们,我在创建多个关卡时遇到了点麻烦。我不太确定我是否用正确的方式创造了他们,但我有一个球员和目标1,目标2,等等。。基本上,当玩家命中目标时,我希望它进入一个新的函数,称为level_2,然后在命中测试后进入level_3。所以等级1很好,命中测试很好,它初始化等级2,但当我尝试再次命中玩家和目标2,甚至目标1时,它只是通过它,什么也不做 我现在了解到,级别2并不像级别1那样被每个帧调用,因为它不是Enter\u帧侦听器的一部分。但我不知道如何让多个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();
}
}
我没有仔细阅读所有的代码,但我想你可以使用函数变量。在类级别声明它(在任何函数之外): 然后,传递引用并调用_dou函数,而不是调用level1函数:
_doFunction = level1;
_doFunction();//or _doFunction.call(); - see Adobes documentation
完成级别1后,通过下一个级别:
_doFunction = level2;
另外,如果答案有助于解决你的问题,不要忘记接受它。有趣。因此,将函数声明为:Private function _doFunction:function;然后我会从我的游戏循环中删除level_1函数吗?在我的Enter_Frame游戏循环中添加-doFunction函数,就像这样-doFunction();我想你并没有像我上面所说的那样去做。我在尝试将函数添加到Enter_Frame循环类型错误:error#1006:value不是一个函数。声明变量函数后,别忘了给它指定一个函数,例如level1。在游戏循环中,只需调用_dofunction()。然后,当在level1中满足条件时,将_doFunction重新分配给point level2函数;在Gameloop中,并在构造函数中将其声明为:levelManager=level_1;levelManager();然后在我的Level_1函数中,我将其添加到hitTest中:levelManager=Level_2;levelManager();它工作得非常好,跟踪速度为每秒25帧。非常感谢你!唯一的问题是,在第2级中没有任何东西可以工作。添加了对象,但arnt interactive guess我必须以某种方式解决这个问题,但感谢这么多人花时间来帮助!是的,我不确定我的播放器是否每秒移动25帧。我跟踪了它,它在第2层只移动了一次
_doFunction = level2;