Удаление объекта из списка отображения - PullRequest
1 голос
/ 11 мая 2011

У меня есть приложение, которое использует основной класс для управления другими мувиклипами, добавляя и удаляя их по мере необходимости, большинство из них являются отдельными экранами или подменю.

Когда я покидаю главное меню и возвращаюсь кпозже, с другого экрана, некоторые анимации и кнопки прокрутки по-прежнему воспроизводятся, чего я не хочу, мне в основном нужен экран главного меню для сброса каждый раз, когда его видят.

Я прочитал об этом и нашелиз-за того, что удаление потомка не обязательно удаляет его из памяти.

Я пытался установить mainmenu на ноль, прежде чем перейти на другой экран, но это вывело ошибку, заявив, что параметр child должен быть не нулевым.

Может ли кто-нибудь пролить свет на то, как полностью убить мое главное меню, когда оно не нужно.

public function confSubMenuOneScreen():void {
        subMenuOneScreen = new SubMenuOne();
        mainmenu = null;
        removeChild(mainmenu)
        addChild(subMenuOneScreen)
        currentScreen = subMenuOneScreen;
    }

Это пример кода, который удаляет меню и добавляет еще один экран сmainmenu = нулевой код, который выдает ошибку.

1 Ответ

1 голос
/ 11 мая 2011

Ошибка, которую вы получаете, заключается в том, что вы устанавливаете объект на ноль, а затем пытаетесь удалить объект (который теперь равен нулю). Изменение двух строк, вероятно, исправит ошибку. Однако это не освободит объект из памяти, пока сборщик мусора не удалит его (при условии, что в вашем приложении нет других ссылок на «mainmenu»).

Вместо того, чтобы пытаться удалять объект и создавать новые объекты каждый раз, когда вам это нужно, я бы предложил создать один экземпляр "mainmenu" и использовать его повторно. Затем просто удалите его из списка отображения и добавьте обратно, когда вам это понадобится снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...