これについてはお許しください(私はFlashを初めて使用します)が、これを見つけるために3日間どこでも検索しました。さまざまなことを試しましたが、何も機能しないようです。これは単純なはずです...
シナリオ:単純なゲーム、プレイヤーは宇宙を飛び回って悪者を撃ちます。(この素晴らしいチュートリアルの開始手順:http://www.makeflashgames.com/tutorials/tut4.php)
衝突が検出されたときに敵を爆発させたいと思います。爆発アニメーションを使用して新しいムービークリップを作成し、そのムービークリップを敵のムービークリップのフレームにドロップしました。このフレームは、Explodeというラベルを付けました。
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(enemies [j]); enemies.splice(j、1);
その後、ゲームは正常に実行されます(爆発アニメーションなし)
@SunilD.:あなたのコードは魅力のように機能します。しかし、それは私に新しい問題を残しました。爆発アニメーションが終了したら敵を削除する必要があります(フレーム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が発生します。パラメータの子はnull以外である必要があります。flash.display :: DisplayObjectContainer / removeChild()のMethodInfo-243()
何か案は?