2014-02-19 2 views
0

я загружен библиотеки MovieClip на сцену с этим кодом:Удалить MC загружается во время выполнения

addChildAt(MC_1, 0); 

В этом MovieClip у меня есть некоторые MovieClips использовать в качестве кнопки. Когда я нажимаю на одну из этих кнопок, он меняет цвет (goto frame2).

После этого я удалил MC_1 от этапа следующим образом:

removeChildAt(0); 

и загружали другой MovieClip, подобный MC_1 следующим образом:

addChildAt(MC_2, 0); 

Проблема в том, что если я загрузить другой MC_1 , последняя нажатая кнопка остается цветной.

Как полностью выгрузить его из памяти?

ответ

1

Видимо, вы не загружаете другойMC_1, вы добавляете один и тот же экземпляр, который ссылается MC_1. «Загрузка» видеоклипа не просто добавляется, это также , создавая экземпляр, для этого вы вызываете MC_1 = new Something();. Итак, чтобы добавить совершенно новый клип, который имеет прототип в библиотеке, вы должны повторно создать экземпляр переменной, которую вы используете, разместив MC_1 = new Something(), где Something - это имя мувиклипа в библиотеке.

Вы также можете сделать другой подход: вы даете прототипу функцию, которая будет реагировать на событие Event.REMOVED_FROM_STAGE, что заставит все кнопки в MC изменять свои состояния по умолчанию. Как это:

public class Something extends MovieClip { 
    // any other functionality is here 
    public function Something() { 
     // ... 
     addEventListener(Event.REMOVED_FROM_STAGE,resetMC); 
    } 
    private function resetMC(e:Event):void { 
     button_1.gotoAndStop(1); // make sure to place proper name of buttons 
     ... // place one gotoAndStop() call per button you want to switch back 
    } 
} 

Затем, как только вы removeChild(MC_1), этот код умирает, делая все кнопки MC_1 «s (ну, все, что упоминаются в функции resetMC()), чтобы показать соответствующий кадр (здесь, button_1 покажет первый кадр). Этот подход, как правило, лучше, потому что вы не создаете новый экземпляр для отображения в памяти, таким образом, вы сохраняете контроль над настоящим MC_1.

+0

Спасибо! я использовал второй подход! Он отлично работает;) – Loralon

Смежные вопросы