Flash Movieclip с суб-анимацией съедая память - PullRequest
1 голос
/ 22 ноября 2011

Я работал над флеш-игрой, где я добавляю суб-анимации в видеоклип, прикрепляя дочерние мувиклипы.Это создает иерархию видеоклипов с различными анимациями, но в результате родительский мувиклип вырос бесконечно и съел много памяти.Есть ли способ, которым я могу оптимизировать такую ​​анимацию?Если работает кэширование растровых изображений, смогу ли я кэшировать все дочерние элементы, которые были добавлены до выполнения (например, дочерние видеоклипы, которые были добавлены во время разработки и перед публикацией SWF).
PS Я работаю с Flash Air 2.6, если этолюбая помощь.

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Чтобы добавить к тому, что сказал Патрик: Кэширование растрового изображения вполне может использовать даже больше памяти, в зависимости от того, как вы это делаете. Однако, если у вас есть несколько экземпляров одной и той же вещи, вы можете сделать только один из них и повторно использовать его пиксели везде, подобно тому, что вы видите здесь http://flexdiary.blogspot.com/2009/12/riadventure-inspiration.html.

Возможно, вы также захотите изучить пулы объектов http://blog.joa -ebert.com / 2008/05/07 / tweening-and-object-pool / .

Однако, когда память начинает выходить из-под контроля, я обычно подозреваю, что вы вызвали утечку памяти, добавляя прослушиватели к объектам, а не удаляя их (поэтому они не могут быть собраны мусором). Другими способами, которые могут вызвать утечку памяти, является обращение к объекту через словарь или использование setTimeout без правильного вызова clearTimeout.

1 голос
/ 23 ноября 2011

Ну, вы сами даете ответ, Flash может многое, но не имеет неограниченного объема памяти.Как бы хорошо вы ни создавали свою анимацию, если родительский видеоклип «растет бесконечно», то, конечно, наступит момент, когда все рухнет.

С предоставленной информацией я могу дать вам только общий ответ.

  • Невозможно добавить неопределенное количество детей, но вы, безусловно, можете создать такое впечатление, если продолжите удалять детей, выходящих за рамки.

  • Есть ли способ улучшить дизайн, избегая повторений?

  • Работаете ли вы в Flash IDE или используете другую IDE, например FlashBuilder, последняя имеет инструменты профилированияэто позволит вам проверить использование памяти вашего приложения.

...