Я создаю игру с AS3 в Flash Professional CS5.5.
В этой игре у меня есть кнопка "снова", чтобы игрок мог сбросить уровень и начать заново. Моя проблема сейчас:
После нажатия «еще раз» этап становится нулевым.
Все, что я делаю в методе «ResetLevel», это то, что я устанавливаю позиции x и y некоторых элементов обратно в 0, удаляю некоторые элементы из мувиклипа, но не удаляю ВСЕ элементы из списка отображения. Таким образом, фон, худ, самолет не удаляются из мувиклипа. Вот набросок моего списка отображения. Удаляемых предметов иногда нет, иногда их 30 и более предметов (зависит от времени игры и т. д.)
Displaylist:
stage
|-- Game movieclip
|--LevelBackground
|--Removeable item
|--Removeable item
|--Removeable item
|--Plane
|--HUD
Но после удаления «съемных элементов» и установки координат положения levelbackground и плоскости сцена становится нулевой.
Может быть, кто-то может помочь мне указать мне на решение этой проблемы.
ИЗМЕНИТЬ:
Внутри "игрового мувиклипа" будет вызываться метод "ResetLevel", и доступ к сцене также будет осуществляться из "игрового мувиклипа". Поэтому я не удаляю «игровой ролик» из списка отображения при сбросе уровня. Я удаляю только некоторые элементы, которые содержит игровой мувиклип из мувиклипа.
Вот некоторый псевдокод из "класса игрового ролика" (GameMC):
public class GameMC extends Sprite {
//Some properties here
public function GameMC() {
//Some code here
//--Events--
this.addEventListener(Event.ADDED_TO_STAGE, Init, false, 0, true);
this.addEventListener(Event.REMOVED_FROM_STAGE, Removed, false, 0, true);
}
private function Init(e:Event) {
this.removeEventListener(Event.ADDED_TO_STAGE, Init);
//Some Code here
}
private function ResetLevel() {
//Some Code here, too
if(removeItemArray.length > 0) {
for(i = 0; i < removeItemArray.length; i++) {
currentRemoveableItem = removeItemArray[i];
this.removeChild(currentRemoveableItem );
removeItemArray.splice(i, 1);
}
}
level.x = 0;
level.y = 0;
trace(stage); //Will output null
}
}
If a display object is not added to the display list, its stage property is set to null.
- person Engineer   schedule 19.07.2012