PDA

Просмотр полной версии : LoadMovie - фоновое мигание при закрузке мувика


Mish
23.05.2011, 00:57
В ролик командой LoadMovie подгружается мувиклип 2.swf, меняющий имеющийся мувиклип 1.swf (на 1 уровне). При этом в момент загрузки, после 1.swf и перед 2.swf, на долю секунды проявляется пустой фон, без мувиклипов. В чем здесь может быть проблема? Спасибо.

mooncar
23.05.2011, 01:03
В том, что загрузка не происходит мгновенно. И отрисовка загруженного также мгновенно не происходит.
Переходите на MovieClipLoader. По событию onLoadInit выгружайте или удаляйте 1.swf и показывайте загруженный 2.swf
В том что 2.swf уже загружен и готов к показу, и скажет это событие. Слушать это событие будет слушатель, в качестве которого в примере ниже используется сам _root (для понимание это плохо, но так написалось :), новичку в работе с этим классом лучше отдельный объект-слушатель создавать, как в хелпе).

mooncar
23.05.2011, 01:09
Читаем и изучаем работу класса MCL.
А грубое решение во вложении. Вместо контейнеров можно в принципе и уровни использовать, метод это допускает, но обычно создаем пустые мувики-контейнеры.

Mish
23.05.2011, 01:25
Спасибо. Т.е. метод LoadMovie фактически неработоспособный, т.к. при его использовании всегда проявляется фоновое мигание?

mooncar
23.05.2011, 01:38
Использовать LoadMovie вообще не нужно, т.к. он, например, не дает возможности отследить момент загрузки. Устарел он уже примерно лет 7 назад.

Mish
23.05.2011, 01:50
Понятно. Отстал я от жизни и прогресса.:) Жаль LoadMovie, он куда проще и понятнее.

mooncar
23.05.2011, 01:52
Только проблем с ним больше и нерешаемых задач.
Причем большинство проблем проявляются при заливке проекта на сервер, когда начинает проявляться асинхронность работы кода относительно готовности загружаемых данных.

Mish
23.05.2011, 02:03
А нет ли возможности при использовании LoadMovie (сорри за настырность) сделать так, чтобы предыдущий ролик выгружался с некоторой задержкой после команды на загрузку следующего ролика, т.е. таким образом избежать паузы?

mooncar
23.05.2011, 02:07
Все упирается в то, что с LoadMovie вы не знаете, когда у вас закончилась загрузка 2.swf.
Можно было бы запустить загрузку заранее, но каналы у всех разные.
В общем, забудьте про LoadMovie, LoadVariables и пр., иначе всегда будете с костылями ходить.
Точно говорю - потратьте пару часиков на MCL.

Mish
23.05.2011, 02:21
Признаюсь, я начисто не воспринимаю программирования сложнее TellTarget или т.п., да и потребность в подобном возникает крайне редко. А как можно запустить загрузку заранее (в данном случае достаточно на 1-2 кадра придержать предыдущий мувик)?

Добавлено через 6 минут
Видимо, сочетая LoadMovie и unLoadMovie чередующихся мувиков?

mooncar
23.05.2011, 02:43
Гм. Я уже сказал вам, что с с LoadMovie вы никогда не знаете, когда у вас закончилась загрузка 2.swf.
Поэтому насколько заранее - никто не знает.
Можно конечно, попробовать останавливать таймлайн, использовать разные лоадеры на основе "трехкадровых циклов", и прочую чушь, но зачем, когда уже есть четкий механизм, разработанный для решения этих проблем.
Можете еще загрузить сразу всё, и показывать по очереди с помощью свойства _visible.
А для загрузки всего используйте прелоадер, на форуме полно примеров.

Способы использования костылей и их модели, честно говоря, обсуждать не оч. интересно. :) Как однозначно решить задачу, я вам дал пример.
Спасибо можете сказать, если что, нажав на кнопочку весов справа. :)

Mish
23.05.2011, 02:54
В принципе, в данном случае я могу судить, насколько последующий мувик должен перекрывать предыдущий (они весят 10-15 кб), т.е. достаточно перекрытия в один кадр. Я попробовал выгружать предыдущий мувик на один кадр позже закрузки следующего, и, похоже, такая примитивная схема сработала.:)
Хотя для более серьезных случаев без ваших рекомендаций, очевидно, не обойтись. Спасибо за совет.

mooncar
23.05.2011, 02:57
Положите на сервер или используйте эмуляцию загрузки прямо во Adobe Flash, могут быть сюрпризы с выгрузкой на один кадр позже.
Если, конечно, у вас не десктопное приложение будет. Кстати, подозреваю, что прямоугольником дело не ограничится, а значит подгружаемые ролики будут тяжелее, так что фактор асинхронности проявится сильнее...

Mish
23.05.2011, 03:18
Готовые ролики весят порядка 10 кб, прямоугольники - это условно для простоты примера. Да, окончательно, конечно, буду смотреть уже после размещения на сервере.

mooncar
23.05.2011, 03:26
Проэмулируйте заранее:

Mish
23.05.2011, 03:43
Ага, благодарю. :)