![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2010
Сообщений: 65
|
Добрый день коллеги!
Каким методом или классом можно задавать временной интервал между событиями, например событиями загрузки изображения 1 и изображения 2? setInterval не предлагать!) К примеру, загружается первое изображение и плавно отображается на экране, через 3 сек вместо первого так же появляется второе и т.д. Вопрос покажется нубским, но под конец рабочего дня котелок плохо варит... Заранее спасибо! |
|
|||||
|
Регистрация: Sep 2005
Сообщений: 106
|
Кажется, вы что-то напутали. Вы вызываете методы. А обработчик события вызывается, когда происходит то, на что он подписан.
Скажем, грузите картинку через MovieClipLoader. Обработчик события onLoadInit вызовется, когда закончится загрузка. Что вам мешает вызывать метод loadClip с заданным интервалом? 1) Можно загрузить все изображения (если их мало и это не критично), потом с интервалом "плавно отображать на экране", да хоть что делайте с ними потом. 2) Загружаем одно изображение, со свистелками-перделками отображаем, потом начинаем грузить 2-е. Отображение начинать, когда сработает обработчик события загрузки. Вот вам простенький пример: var pics:Array = new Array("1.png", "2.png"); var container:MovieClip = createEmptyMovieClip("container", getNextHighestDepth()); var mcLoader:MovieClipLoader = new MovieClipLoader(); var currentPic:Number = 0; mcLoader.addListener(this); mcLoader.loadClip(pics[0], container); // function onLoadInit(mc:MovieClip) { currentPic++; mc._alpha = 0; timer = setInterval(displayPic, 50, mc); } // function displayPic(mc:MovieClip) { if (mc._alpha < 100) { mc._alpha += 5; } else if (currentPic < pics.length) { setTimeout(function() {mcLoader.loadClip(pics[currentPic], container);}, 3000); clearInterval(timer); } else { clearInterval(timer); } } Последний раз редактировалось petyar; 13.04.2011 в 19:13. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 65
|
Спасибо помогло!)
Только трудность теперь в другом возникла: в повторном воспроизведении флэша. Loop в настройках публикации почему-то не помогает. |
|
|||||
|
[+6 09.06.11]
Регистрация: May 2007
Сообщений: 721
|
сделайте программно
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 65
|
Привожу код:
var ID1:Number = 0;//для изменения прозрачности изображения var ID2:Number = 0;//для движения заголовка var ID3:Number = 0;//для движения подзаголовка var a:Number = 0.09;//ускорение для заголовков var mcl:MovieClipLoader = new MovieClipLoader(); var listener:Object = new Object(); mcl.addListener(listener); var xml_obj:XML = new XML(); var imagesCount:Number = 0; var titlesArray:Array = new Array(); var subTitlesArray:Array = new Array(); _title.forceSmoothing = true; subtitle.forceSmoothing = true; mc._alpha = 0; xml_obj.ignoreWhite = true; xml_obj.load("settings.xml");//точка входа xml_obj.onLoad = function(success:Boolean) { if (success) { imagesCount = xml_obj.firstChild.childNodes[0].attributes.count; var k:Number = 0; do { var str_subtitle = xml_obj.firstChild.childNodes[0].childNodes[k].childNodes; var str_title = xml_obj.firstChild.childNodes[0].childNodes[k].attributes.title; if ((str == undefined) && (str_subtitle == undefined)) { break; } titlesArray = titlesArray.concat(str_title); subTitlesArray = subTitlesArray.concat(str_subtitle); k++; } while(true); loadImages(1); } }; loadImages = function(i:Number):Void{ if(i > imagesCount) return; var src:String = "images/flash"+i+".jpg"; _title.text = titlesArray[i-1]; subtitle.text = subTitlesArray[i-1]; mcl.loadClip(src, mc); listener.onLoadInit = function(target_mc:MovieClip):Void{ setTimeout(alphaChange, 0, "appear"); setTimeout(moveTitle, 50, "up"); setTimeout(moveSubTitle, 50, "up"); setTimeout(alphaChange, 5000, "disappear"); setTimeout(moveTitle, 5050, "down"); setTimeout(moveSubTitle, 5050, "down"); setTimeout(loadImages, 5400, i+1); } } alphaChange = function(to_do:String):Void{ if(to_do == "appear"){ ID1 = setInterval(appear, 15); } if(to_do == "disappear") { ID1 = setInterval(disappear, 15); } } moveTitle = function(to_do:String):Void{ if(to_do == "up"){ ID2 = setInterval(titleUp, 15); } if(to_do == "down"){ ID2 = setInterval(titleDown, 15); } } moveSubTitle = function(to_do:String):Void{ if(to_do == "up"){ ID3 = setInterval(subtitleUp, 15); } if(to_do == "down"){ ID3 = setInterval(subtitleDown, 15); } } appear = function():Void{ if(mc._alpha < 100){ mc._alpha += 5; }else{ clearInterval(ID1); } } disappear = function():Void{ if(mc._alpha > 0){ mc._alpha -= 5; }else{ clearInterval(ID1); } } titleUp = function():Void{ if(_title._y > 230) _title._y += (230 - _title._y)*a; else clearInterval(ID2); } titleDown = function():Void{ if(_title._y < 300) _title._y += 10; else clearInterval(ID2); } subtitleUp = function():Void{ if(subtitle._y > 265) subtitle._y += (265 - subtitle._y)*a; else clearInterval(ID3); } subtitleDown = function():Void{ if(subtitle._y < 335) subtitle._y += 10; else clearInterval(ID3); } Может есть другой способ?! Добавлено через 24 часа 36 минут Получилось! |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|