在动作脚本 3 中添加一个孩子时,我遇到了一些问题。我目前正在构建一个 Space Invaders 游戏,并且我正在编写将小行星添加到舞台的函数。
我的第一个问题是,每次我尝试添加新的小行星时,都会添加所有以前的小行星。
我的第二个问题是当我添加 hitTestOject 函数时。当宇宙飞船撞击小行星物体时,它会抛出一个错误并且它什么都不做。
这是我收到的 hitTestObject 错误:
TypeError:错误 #1034:类型强制失败:无法将“ast_0”转换为 flash.display.DisplayObject。在 spaceranger_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
非常感谢,
彼得斯图尔特