|
|
|||||
Регистрация: Jan 2010
Сообщений: 187
|
как удалить объект со сцены?
Вобщем, есть у меня арканоид.
Когда из главного класса Game формирую сцену - добавляю класс шарика Шариков может быть добавлено несколько. Тогда делаю так (не спрашивайте почему): _ball = new Ball(); addChild (_ball); _ball2 = new Ball(); addChild (_ball2); _ball3 = new Ball(); addChild (_ball3); И вот главный вопрос теперь, как все эти шарики удалить со сцены (когда выбиваются все кирпичики например)? Сейчас я сделал так (в главном классе): if (ballNumber == 3) { removeChild (_ball3); _ball3 = null; ballNumber = 2; } if (ballNumber == 2) { removeChild (_ball2); _ball2 = null; ballNumber = 1; } if (ballNumber == 1) { removeChild (_ball); _ball = null; ballNumber = 0; } while ( this.numChildren ) this.removeChildAt( 0 ); Тоесть, я так понял, до конца они почему-то не убиваются. Подскажите, где здесь может быть решение? |
|
|||||
Lorem ipsum
|
Следует добавить в шарик метод stop() (а то и вовсе destroy() с таким-то подходом) и вызывать еще и его, помимо удаления со сцены и обнуления ссылки. Внутри этого метода реализовать остановку шарика. Там же наверняка ENTER_FRAME обрабатывается какой-нибудь.
__________________
Поймай яблоко 2! |
|
|||||
Цитата:
|
|
|||||
.
|
Цитата:
И правда, циклом было бы приятственнее. |
|
|||||
Регистрация: Jan 2010
Сообщений: 187
|
Zebestov, caseyryan: И действительно. Внутри класса шарика есть событие Энтерфрейм, перемещающее его.
Добавил внутрь функцию убивания этого события. Вот такую: public function kill():void { removeEventListener(Event.ENTER_FRAME, moveBall); stage.removeEventListener(MouseEvent.MOUSE_DOWN, on_mouse_down); } if (ballNumber == 3) { _ball3.kill(); removeChild (_ball3); _ball3 = null; ballNumber = 2; } if (ballNumber == 2) { _ball2.kill(); removeChild (_ball2); _ball2 = null; ballNumber = 1; } if (ballNumber == 1) { _ball.kill(); removeChild (_ball); _ball = null; ballNumber = 0; } Визуально удаляются все, а передвижения иногда от некоторых шариков остаются. Выражается это в том, что если после окончания уровня сразу запустить следующий (или этот-же) уровень - иногда случается, что невидимый шарик (который не до конца удалился) с прошлого уровня начинает выбивать кубики. |
|
|||||
Регистрация: Dec 2011
Сообщений: 70
|
Может быть, на шарики где-то еще ссылки остались?
Например, перед этим кодом встречалось что-то вроде |
Часовой пояс GMT +4, время: 03:46. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|