Управление флэш-памятью и Actionscript - PullRequest
0 голосов
/ 08 марта 2012

Было много обсуждений по этой проблеме, но я хочу обратить внимание на ситуации, которые IMHO кажутся не очень ясными:

Да, общие правила: Удалить chachedAsBitmap Остановить movieClip, если проигрывается Удалить события Удалить ссылки и т. Д..

Но давайте посмотрим:

Первый пример: у меня есть вложенный спрайт (например, mainSprite), он содержит другие спрайты с динамическими текстовыми полями в нем (и чеканятся как растровые изображения), только textFileds иMovieClips со слушателями событий на нем (со слабой ссылкой).Когда мне нужно удалить этот спрайт, мне нужно сначала удалить все его вложенное содержимое с помощью циклов, или просто достаточно

removeChild(mainSprite);
mainSprite=null;

?

Второй пример: у меня есть некоторый спрайт, в котором я 'm загружая растровое изображение и манипулируя с bitmapData, позже я просто заменяю содержимое этого спрайта другим растровым изображением, выделяется ли память для более старого растрового изображения, автоматически стирается и перезаписывается или все еще существует?

Третий пример: у меня есть некоторые"графический шаблон" MovieClip (в библиотеке с установленным для него свойством Export for Actionscript), который я добавляю на сцену и заполняю динамическими данными (и добавляю прослушиватели событий), скажем, что это одна сцена приложения, другая сценаМне нужен тот же MovieClip с другими динамическими данными, но между тем нужно очистить мою сцену (нужно что-то вроде анимации перехода, которая также является библиотекой MovieClip), что является лучшим способом: установить для этого свойства видимого свойства MovieClip значение false (при воспроизведении анимации перехода) изатем повторно или просто удалите его с помощью removeChild, а затем добавить при добавлении с помощью addChild еще раз?

Все, что я написал, - это больше об Air Mobile, потому что в большинстве случаев для настольных компьютеров эти ситуации не так проблематичны, но в случае мобильной разработки они есть.

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Вы можете визуально контролировать использование памяти наряду с fps и т. Д., Используя эту библиотеку: http://code.google.com/p/flash-console/

Надеюсь, это поможет.

PS gc во флэш-памяти всегда странная вещь:)

0 голосов
/ 08 марта 2012

Первый пример: достаточно удалить mainSprite из списка отображения, если на его дочерних элементах присутствуют только слабые слушатели. Второй пример: я бы посоветовал повторно использовать тот же объект с visible = false. Воссоздание одного и того же объекта обходится дороже ресурсов, плюс вы получаете еще один экземпляр того же объекта в памяти, прежде чем он получит gc'ed.

...