アクション スクリプト 3 で子を追加するときに、いくつかの問題があります。現在、スペース インベーダー ゲームを作成しており、小惑星をステージに追加する関数を作成しています。
私の最初の問題は、新しい小惑星を追加しようとするたびに、以前のすべての小惑星が追加されていることです。
2 つ目の問題は、hitTestOject 関数を追加するときです。宇宙船が小惑星に衝突すると、エラーが発生し、何もしません。
hitTestObject で受け取るエラーは次のとおりです。
TypeError: エラー #1034: 型強制に失敗しました: 「ast_0」を flash.display.DisplayObject に変換できません。spaceanger_fla::MainTimeline/addAstroid() で flash.utils::Timer/_timerDispatch() で flash.utils::Timer/tick()
そして、ここに私のコードがあります。各小惑星が 5000 ミリ秒ごとに追加されるように、タイマーを使用します。
// Add astoid
var astTimer:Timer = new Timer(5000);
astTimer.addEventListener(TimerEvent.TIMER, addAstroid);
var i:Number = 0;
function addAstroid (e:TimerEvent):void{
var ast = new astroid();
ast.name = "ast_"+i;
ast.y = Math.random()*stage.stageHeight;
ast.x = 565;
addChild(ast);
trace(i);
if(ship.hitTestObject(ast.name)){
gotoAndStop("2");
}
i = i+1;
}
astTimer.start();
いくつかのアドバイス、推奨事項、および回答をいただければ幸いです:)
アップデート
ループエラーを整理しました。古い小惑星はもう現れません!:D
どうもありがとう、
ピーター・スチュアート