У меня возникла пара проблем при добавлении ребенка в сценарий действия 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
Огромное спасибо,
Питер Стюарт