Action Script 2.0
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);
};