PDA

Просмотр полной версии : LoadMovie работает через раз!!!


Ромастый
04.06.2004, 19:02
Какая-то странная проблема - с винта все работает ок и подгружает swf'ы в основной клип нормально, а из инета то со второго клика, реже с третьего, еще реже с первого:(

Ромастый
04.06.2004, 19:32
Может это быть из-за того, что я один и тот же swf подгружаю несколько раз? То есть первый раз загрузил, потом что-то еще заместо него загрузил, потом хочешь его же обратно - и вот оно, тока со второго клика. А то и стретьего:(

silin
04.06.2004, 23:03
посмотри по форуму про ожидание загрузки (много раз обсуждалось)

Ромастый
05.06.2004, 14:35
Я весь поиск уже просмотрел - только один раз что-то похожее встретил, но четкого решения проблемы не было:(
Подгружаемые swf - весят мало, а прелы вообще копейки! Но почему-то создается впечатление, что после первого клика только выгружается содержимое предыдущего клипа, а после второго МОМЕНТАЛЬНО загружается нужный. Это не может быть из-за того, что в подгружаемом swf'е каждый раз объект loadVars создается (содержимое swf динамически через php обновляется)?

Ромастый
05.06.2004, 14:58
И еще. Каждый раз нужный swf из инета скачивается, или все-таки только первый раз, а потом уже из кэша?

s_u_m_p
05.06.2004, 16:10
Оригинал написал(а) Romasty
Я весь поиск уже просмотрел - только один раз что-то похожее встретил, но четкого решения проблемы не было:(
Подгружаемые swf - весят мало, а прелы вообще копейки! Но почему-то создается впечатление, что после первого клика только выгружается содержимое предыдущего клипа, а после второго МОМЕНТАЛЬНО загружается нужный. Это не может быть из-за того, что в подгружаемом swf'е каждый раз объект loadVars создается (содержимое swf динамически через php обновляется)?

вот именно так и происходит, сначала выгружается мывик, точнее заменяется на пустой, а потом в этот пустой грузиться, то что ты хочешь,

а прелодаер обязательно нужен

this.createEmptyMovieClip ("mc", 1);
mc.loadMovie ("your_file");
this.onEnterFrame = function () {
var to = this.mc.getBytesTotal ();
var lo = this.mc.getBytesLoaded ();
if (to*lo > 0 && lo >= to) {
// image loaded
} else {
// preloader
}
}

s_u_m_p
05.06.2004, 16:23
Оригинал написал(а) Romasty
И еще. Каждый раз нужный swf из инета скачивается, или все-таки только первый раз, а потом уже из кэша?

один раз потом из кэша

тут на форуме bitSky показывал как сдалать все время загрузку из инета и как вообще контролировать все это дело...

вот линк (http://www.flasher.ru/forum/showthread.php?s=&threadid=56957)

Ромастый
05.06.2004, 17:02
THANK's! :)
Я каждый раз mc стал удалять и тут же создавать - кто-то писал про глюк, когда процесс загрузки не останавливается и подвисает, а после второго клика прерывается, и соответственно после третьего опять начинается.
А все LoadVars я в центральный код вынес и сделал, что бы все данные после первой загрузки в корневых переменных оставались - чтоб при повторном обоащении к серверу не обращаться.

s_u_m_p
05.06.2004, 19:07
а при чем тут клики? ты что на евенты сразу функции вешаешь? можно просто: поле загрузки опредеделяй действия


this.createEmptyMovieClip ("mc", 1);
mc.loadMovie ("your_file");
this.onEnterFrame = function () {
var to = this.mc.getBytesTotal ();
var lo = this.mc.getBytesLoaded ();
if (to*lo > 0 && lo >= to) {
// image loaded
/////////
mc.onRollOver = function () {
}
mc.onRelease = function () {
}
mc.onRollOut = function () {
}
//////////
} else {
// preloader
}
}

Dunkin MadLoad
05.06.2004, 21:59
сделай клип тот куда грузица кадра в 3. и когда ты хочешь в нево загрузить уже второй объект выгрузи официально первый. тоесть напиши unloadmovie. дома у тя swf работает ибо не через ехплорер, а с инета все старые обекты проходят нелегкий путь через бравзер и поетому засоряется и флэш думает что он загрузил обект, а на самом деле он ево только выгрузил))

Ромастый
07.06.2004, 02:05
Оригинал написал(а) Dunkin MadLoad
сделай клип тот куда грузица кадра в 3. и когда ты хочешь в нево загрузить уже второй объект выгрузи официально первый. тоесть напиши unloadmovie. дома у тя swf работает ибо не через ехплорер, а с инета все старые обекты проходят нелегкий путь через бравзер и поетому засоряется и флэш думает что он загрузил обект, а на самом деле он ево только выгрузил))
Тож работает, но принципиально от mc.removeMovieClip(); и тутже createEmptyMovieClip("mc",0); не отличается. Просто хочется понять почему иногда при повторном клике swf только выгружается, а иногда выгружается и тут же грузит новый. Экспериментировал, регулярно чистя кэш! Пока не понял - почему так случается при подгрузке в один и тот же mc, но swf'ы не содержащие динамическую подгрузку данных грузятся ВСЕГДА с первого клика, а в которых есть loadVars - со второго, но иногда и первого, реже - с третьего. Закономерности не установил :(
Вынес весь код в центральный мувик и myLoad = new LoadVars(); myLoad.load(...) выполняется один раз после первого обращения, после этого все перменные хранятся в корне. Не очень правильно с точки зрения использования ресурсов клиента, но специфика сайта такова, что иногда приходится возвращаться к уже просмотренным разделам.
В общем, сейчас все работает как надо, но хочется точно знать причину такой вот фигни :)

Ромастый
07.06.2004, 02:12
[QUOTE]Оригинал написал(а) s_u_m_p
[B]а при чем тут клики? ты что на евенты сразу функции вешаешь? можно просто: поле загрузки опредеделяй действия

это понятно. Я еще просто не очень опытен, и код не всегда централизую. Необходимые действия пишу в самих подгружаемых swf'ах на выполнение LoadVars.onLoad=function() {} Дело в другом - не могу понять, почему иногда выгружает и сразе грузит, а иногда просто выгружает :rolleyes:

Dunkin MadLoad
07.06.2004, 07:07
дык на твой loadvars время надо. ибо то время, которое затрачиваешь скажем на onrelease или есче чиво, его не хватает на прогрузку данных. сделай клипы кадра по 3 хотя бы или веди учет загруженных байтов

Ромастый
07.06.2004, 19:53
Спасиб!!! Просто понять один раз организацию загрузки, и нет проблем:)