在操作腳本3中添加一個孩子時,我遇到了一些問題。我目前正在構建一個Space Invaders遊戲,並且正在編寫將小行星添加到舞臺上的功能。在AS3中使用addChild和hitTest時出現的奇怪問題
我的第一個問題是,每次我嘗試添加一個新的小行星時,都會添加所有以前的小行星。
我的第二個問題是當我添加hitTestOject函數。它拋出一個錯誤,當太空船撞擊小行星物體時它不會做任何事情。
這是我收到與hitTestObject錯誤:
TypeError: Error #1034: Type Coercion failed: cannot convert "ast_0" to flash.display.DisplayObject. at spaceranger_fla::MainTimeline/addAstroid() at flash.utils::Timer/_timerDispatch() at 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();
一些意見,建議和答案,將不勝感激:)
UPDATE
我排序的循環錯誤。舊小行星不再出現! :d
非常感謝,
彼得·斯圖爾特
根據您的編輯,我看你接着說:I = I + 1;'你的例子。 – 2013-05-05 00:33:08
嗨,傑森,是的,我調試時刪除了增量代碼,我忘了添加它,但這沒有什麼區別。每個小行星對象都是一個影片剪輯,影片剪輯正在循環。我通過在補間動畫結束處添加「stop()」來解決此問題。它現在讓我的hitTestObject工作? – 2013-05-05 11:25:16
是的,你的回答對我有意義!我將創建一個計時器,每500毫秒檢查一次命中數。謝謝:) – 2013-05-05 15:07:36