the_scratch
30.01.2009, 12:59
AS2, MX2004
Приветствую всех.
У меня очередные проблемы с Flash, у меня они постоянно возникают, причём неразрешимые какие-то. На этот раз всё упёрлось в объём памяти.
Ситуация такая... Есть Swf, внутри у него (в библиотеке) лежат "символы", которые MovieClip. В них пофреймово хранятся картинки, такие типа мультики. Мувиков несколько штук, каждый в ActionScript экспортируется в виде одного и того же класса, пронаследованного от MovieClip.
Мувики показываются по желанию пользователя, между ними можно свободно переключатся. Оказывается, что показ такого мувика отъедает некоторое количество памяти, которая назад не отдаётся никогда.
На РС никаких проблем. Мувики показываются, память какое-то время отъедается, отъедается, потом, когда уже все картинки показаны хотя бы раз (это я так восстанавливаю картину происходящего по собственному разумению), процесс отъедания памяти останавливается, и дальше мувики показываются, а память уже не требуется. Ну увеличился объем ролика в памяти от 20 до 80 М, фигня какая. К слову, сам SWF вообще-то 5М, я изначально конкретно так парился насчёт размеров и старался всё минимизировать.
Потому что вот на КПК памяти всего 40 М. Ну и соответственно, в какой-то момент система наглухо завешивается. Наглухо.
Попытки использовать System.gc() ни к чему не привели. GC чистит совсем другую память, не ту, которая отводится под картинки и мувики. Все new-delet'ы я проверил, в принципе, проблема не в их. Память совершенно очевидно отъедается именно при показе картинок, которые ещё не показывались, это факт.
Как я сейчас вижу решение? Хочу попробовать мувики-мультики хранить не в библиотеке внутри swf, а в виде отдельных файлов swf, и подгружать их через loadMovie, а не attachMovie, как сейчас. Это вообще-то ужасно, потому что возникнут очевидные лаги при переключении мультиков и вообще вся изначальная проработанная концепция идёт к... Но мне хоть как-то надо разруливать ситуацию с памятью... Есть просто надежда, что unloadMovie вызовет хоть какую-то зачистку памяти от уже показанных изображений.
Собственно, Вопрос. Мувики внутри библиотеки у меня ассоциированы с классом. А как их ассоциировать с классом при хранении снаружи SWF? Код класса где должен быть? Помогите. пожалуйста, разобраться.
Приветствую всех.
У меня очередные проблемы с Flash, у меня они постоянно возникают, причём неразрешимые какие-то. На этот раз всё упёрлось в объём памяти.
Ситуация такая... Есть Swf, внутри у него (в библиотеке) лежат "символы", которые MovieClip. В них пофреймово хранятся картинки, такие типа мультики. Мувиков несколько штук, каждый в ActionScript экспортируется в виде одного и того же класса, пронаследованного от MovieClip.
Мувики показываются по желанию пользователя, между ними можно свободно переключатся. Оказывается, что показ такого мувика отъедает некоторое количество памяти, которая назад не отдаётся никогда.
На РС никаких проблем. Мувики показываются, память какое-то время отъедается, отъедается, потом, когда уже все картинки показаны хотя бы раз (это я так восстанавливаю картину происходящего по собственному разумению), процесс отъедания памяти останавливается, и дальше мувики показываются, а память уже не требуется. Ну увеличился объем ролика в памяти от 20 до 80 М, фигня какая. К слову, сам SWF вообще-то 5М, я изначально конкретно так парился насчёт размеров и старался всё минимизировать.
Потому что вот на КПК памяти всего 40 М. Ну и соответственно, в какой-то момент система наглухо завешивается. Наглухо.
Попытки использовать System.gc() ни к чему не привели. GC чистит совсем другую память, не ту, которая отводится под картинки и мувики. Все new-delet'ы я проверил, в принципе, проблема не в их. Память совершенно очевидно отъедается именно при показе картинок, которые ещё не показывались, это факт.
Как я сейчас вижу решение? Хочу попробовать мувики-мультики хранить не в библиотеке внутри swf, а в виде отдельных файлов swf, и подгружать их через loadMovie, а не attachMovie, как сейчас. Это вообще-то ужасно, потому что возникнут очевидные лаги при переключении мультиков и вообще вся изначальная проработанная концепция идёт к... Но мне хоть как-то надо разруливать ситуацию с памятью... Есть просто надежда, что unloadMovie вызовет хоть какую-то зачистку памяти от уже показанных изображений.
Собственно, Вопрос. Мувики внутри библиотеки у меня ассоциированы с классом. А как их ассоциировать с классом при хранении снаружи SWF? Код класса где должен быть? Помогите. пожалуйста, разобраться.