PDA

Просмотр полной версии : Когда возращает управление функция loadMovie()


Sergey (U4)
30.07.2003, 16:27
Ситуация следующая: в клипе при выборе пункта меню в клип-заглушк загружается 80мб swf, в котором есть preloader.

В итоге: в момент загрузки клип виснит секунд на 3-5, после чего в загружаемом swf preloader сразу стартует с 100%.

Если к клипу-заглушке прикрепить обработчик события enterFrame c кодом trace( getBytesLoaded() + "из" + getBytesTotal(), то картина следущая:

4 из 4
4 из 4
4 из 4
(момент вызова loadMovie - зависание на 3-5 сек)
81920000 из 81920000
81920000 из 81920000
81920000 из 81920000

Никакого намека на паралельность работы программы и загрузки внешнего клипа. Выходит, что loadMovie() ждет окончания загрузки клипа и лишь потом возращает управление в программу, ее вызвавшую.

Вопрос: у кого-нибудь есть работающий пример, в котором после некоторого события (пр. нажатия кнопки) загружается внешний swf, а на экране отображаются данные о процессе его загрузки?

Dimonius
30.07.2003, 17:24
На локале, прелоадеры не работают, потому что система всегда возращает полное количество.

Sergey (U4)
30.07.2003, 18:44
Почему не работают. Да дело даже не в предзагрузчике, почему movie'k виснит, ожидая когда полностью загрузится внешний swf. При обычном проигровании movie'ка flash player же не ждеть полной загрузки клипа, начинает проигровать с первого загруженного кадра, почему тоже самое не происходит в случае с loadMovie()?

Useless
30.07.2003, 21:21
Вообще-то обычно всё работает, как надо.
То есть - внешний ролик подгружается, а исходный работает независимо.

Может, исходник выложишь?

Да, а у тебя там и правда 80 мег подгружается?

Sergey (U4)
30.07.2003, 21:59
В исходнике нет ничего особенного (банальный вызов этой приславутой loadMovie при нажати на пункт меню). Но прога виснит до тех пор пока не загрузится swf - это факт (клип, выполняющий роль указателя мышки, перестает на время загрузки двигаться и вообще не проигрывается). Лучше кто нибудь мне показал пример,где выводится процеесс загрузки внешнего swf.

Useless
31.07.2003, 00:37
Похоже, дело действительно в том, что грузится с локального диска. У меня похожая фигня, только там размеры поменьше.

Прелоадеров - дохренищи в разделе "исходники".

Sergey (U4)
31.07.2003, 14:57
Предзагрузчик способен написать практически любой пользователь Flash. Только вот работающего preloader'a в связке с loadMovie(), я к моему сожалению еще не видел.

P.S. Спасибо всем, кто вместе со мной пытался разобраться в этом вопросе.

Krisha
31.07.2003, 21:19
Вот такой код у меня отрабатывает нормально, это конечно не супер-пупер, но работает:

код этот стоит на MC, в который собственно происходит загрузка (_root.MyClip):


onClipEvent (data) {
totalBytes = this.getBytesTotal();
loadedBytes = this.getBytesLoaded();

if (totalBytes >= 1) {
_root.Preloader._visible = true;
_root.Preloader.Indicator._width = Math.floor( (loadedBytes / totalBytes) * 100 );
}

if ( loadedBytes >=1 and totalBytes >= 1 and loadedBytes == totalBytes) {
_root.Preloader._visible = false;
}
}


А это фунция, которая загружает:


function LoadLesson (LessonName) {
_root.MyClip.loadMovie(LessonName);
}

Sergey (U4)
31.07.2003, 23:56
Очень странно. Опять неудача. Для клипа-заглушки, куда загружается внешний swf, пишу, как ты посоветовал:

onClipEvent (data) {
totalBytes = this.getBytesTotal();
loadedBytes = this.getBytesLoaded();

trace(loadedBytes);

/*if (totalBytes >= 1) {
_root.Preloader._visible = true;
_root.Preloader.Indicator._width = Math.floor( (loadedBytes / totalBytes) * 100 );
} if ( loadedBytes >=1 and totalBytes >= 1 and loadedBytes == totalBytes) {
_root.Preloader._visible = false;
}*/

}


Итог: теже 3-5 сек. тишины (кнопка даже залипает), предзагрузчик все это время спит мертвым сном, хотя я ожидал, что 3-4 разных значений loadBytes отрассируется.


Если тебя не затруднит, пришли мне на почту свой какой-нибудь работающий пример (*.fla или *.swf). ufo@starlink.ru

Sergey (U4)
01.08.2003, 14:03
Спасибо за пример, но мне нужно, чтобы предзагрузчик отражал процесс загрузки внешнего swf, а не главного моvie'ka.

Вместо "001.swf", я пишу путь к своему 80 мб swf, что приодит к уже известным последствиям. Прога виснит, до тех пор пока не загрузится целиком swf, никакого процесса загрузки preloader не отображает. Кнопка "GO" залипает на время подзагрузки в нешнего swf в положении down....

Вот такие дела ...

Krisha
01.08.2003, 17:40
а разве 001.swf не внешний ?
лично мне кажется, что глюк именно в размере погружаемого мува...

Diomas
03.08.2003, 03:23
Может проблема именно в том, что проигрыватель офигевает от такой 80-метровой шняги.

Насчет прелоадеров - пробуйте тестировать на флопах. Не очень сильно, но все-таки помогает.