请原谅我对此感到不快(我是 Flash 新手),但我已经到处搜索了 3 天才找到这个,我尝试了很多不同的东西,但似乎没有任何效果。这应该很简单...
场景:简单的游戏,玩家穿越太空射击坏人。(我的起始步骤是这个很棒的教程: http: //www.makeflashgames.com/tutorials/tut4.php)
我现在想让我的敌人在检测到碰撞时爆炸。我用我的爆炸动画制作了一个新的影片剪辑,将该影片剪辑放到我的敌人影片剪辑的帧中。这个框架我标记为爆炸。
在 GameController.as 上,我查看了检测到子弹碰撞时移除 Enemy 的代码,并移除了 removechild 代码,并将其替换为: Enemy.gotoAndPlay("Explode"); 这给了我错误 1061:通过静态类型 Class 的引用调用可能未定义的方法 gotoAndPlay。
我试过 _root.Enemy.gotoAndPlay("Explode"); 它不起作用(我读到 _root 在 as3 中不起作用)
我错过了什么?
我写的代码在几个不同的领域。在gamecontroller.as我有
for (var i=bullets.length - 1; i >= 0; i--)
{
for (var j=enemies.length - 1; j >= 0; j--)
{
if (bullets[i].hitTestObject(enemies[j].collisionArea))
{
playerScore += enemies[j].getPointsWorth();
mcGameStage.removeChild(bullets[i]);
bullets.splice(i,1);
Enemy.gotoAndPlay("Explode");
break;
}
}
}
如果我删除 gotoandplay,然后放入
mcGameStage.removeChild(敌人[j]); 敌人。拼接(j,1);
然后游戏运行正常(没有爆炸动画)
@Sunil D.:您的代码就像一个魅力。然而,它给我留下了一个新问题。当爆炸动画结束时我需要移除我的敌人(第 35 帧)我尝试了这段代码
enemy.addEventListener(Event.ENTER_FRAME,checkFrame);
function checkFrame(event:Event):void
{
if (enemy.currentFrame == 35)
{
mcGameStage.removeChild(enemies[j]);
enemies.splice(j,1);
enemy.removeEventListener(Event.ENTER_FRAME,checkFrame);
}
}
这给了我错误 #2007:参数 child 必须为非空。在 Flash.display::DisplayObjectContainer/removeChild() 在 MethodInfo-243()
有任何想法吗?