removeChild или removeChildAt фактически не удаляет Sprite или любой другой объект DisplayObject из памяти, он только удаляет его из списка отображения. Это означает, что если вы создадите 1000 спрайтов и добавите их в рабочую область (displaylist), а затем используете removeChild для всех 1000 спрайтов, они все равно могут существовать в памяти навсегда.
Чтобы удалить его из памяти, он должен быть установлен в null для всех ссылающихся объектов.
Если вы действительно хотите удалить его, просто обнулите его и проверьте следующее:
- Удалите его из списка отображения, используя removeChild или removeChildAt
- Удалить все EventListeners, которые прикреплены к клипу.
- Если вы использовали ссылку в массиве, векторе, словаре или любом другом объекте, удалите его из объекта, установите для него значение null или склейте его с помощью Array.splice ()
- Установить объект = ноль
Вы можете использовать решение, подобное EventManagedSprite , которое использует EventRemover , чтобы немного упростить полное удаление объектов. Это также может быть полезно в больших проектах.
Если вы хотите повторно использовать спрайт / объект, но при повторном использовании вы хотите повторно использовать объекты, вы должны использовать пул объектов. Подробнее о объектном пуле с AS3 :