Юрьевич К.
328 повідомлень
#15 років тому
День добрый, товарищи.
Топик будет интересен АС разработчикам.

Дано: Есть код загрузки изображения "1.jpg" в муви кип "klip" (не через ХМЛ)
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = {};
var format:TextFormat = new TextFormat();
loader.addListener(listener);
format.color = 0x000000;
format.size = 25;
format.font = "_sans";
this.createTextField("preloader_txt", 1, 100, 100, 50, 30);
preloader_txt.autoSize = true;
preloader_txt.border = false;
preloader_txt.setNewTextFormat(format);
loader.loadClip("1.jpg", klip);
listener.onLoadStart = function():Void {
preloader_txt.text = "0 % загружено.";
};
listener.onLoadError = function(clip:MovieClip, message:String):Void {
if (message == "URLNotFound") {
preloader_txt.text = "Ссылка не найдена.";
}
if (message == "LoadNeverCompleted") {
preloader_txt.text = "Ошибка загрузки.";
}
};
listener.onLoadProgress = function(clip:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
preloader_txt.text = Math.round(bytesLoaded/bytesTotal*100)+" % загружено.";
};
listener.onLoadComplete = function():Void {
preloader_txt.removeTextField();
};


Проблема: если сделать, например, слайд шоу употребляя такой скрипт - картинки будут грузится параллельно.

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


Другими словами - Как можно остановить выполнение скрипта в одном кадре, дождаться его исполнения и только потом переходить к проигрыванию ролика дальше?

Спасибо за внимание и помощь ...
Виталий Я.
659 повідомлень
#15 років тому
Во первых : подкоректируйте , если возможно , название топика .
Во вторых (по сути) : чтобы вышло слайд шоу , делайте несколько кей фреймов , в каждый скиньте код загрузки картинки для следущего фрейма .
В самом верху скрипта на каждом фрейме пишете stop(); - остановим проигрывание клипа .
Дальше в листенере события полной загрузки проверяете сколько времени прошло , если больше таймаута , отведенного на показ 1 картинки из слайд шоу - переходите на следущий фрейм сразу , если меньше - делаете таймер и ждете то время , сколько еще должен длится таймаут .
И самое важное - заставить флеш при экспорте флешки не пихать весь код в первый фрейм , для этого там есть флажок , который вы им сами найдете )
Надеюсь , суть ясна ?
Владислав Р.
265 повідомлень
#15 років тому
Цитата ("Xazzzi"):
Во первых : подкоректируйте , если возможно , название топика .
Во вторых (по сути) : чтобы вышло слайд шоу , делайте несколько кей фреймов , в каждый скиньте код загрузки картинки для следущего фрейма .
В самом верху скрипта на каждом фрейме пишете stop(); - остановим проигрывание клипа .
Дальше в листенере события полной загрузки проверяете сколько времени прошло , если больше таймаута , отведенного на показ 1 картинки из слайд шоу - переходите на следущий фрейм сразу , если меньше - делаете таймер и ждете то время , сколько еще должен длится таймаут .
И самое важное - заставить флеш при экспорте флешки не пихать весь код в первый фрейм , для этого там есть флажок , который вы им сами найдете )
Надеюсь , суть ясна ?

Не очень хорошее решение. А если заранее неизвестно сколько картинок нужно подгружать?
Лучше по завершению загрузки предыдущей картинки, грузить следующую

listener.onLoadComplete = function():Void {
currPic++
loader.loadClip(currPic+".jpg", "klip"+currPic);
};
Виталий Я.
659 повідомлень
#15 років тому
rudnijvlad, называть картинку только по порядковому номеру тоже не очень , но согласен что второй вариант получше .
а еще лучше передать в флеш вары масив названий картинок , а потом подгружать их на здоровье по мере надобности ...)