![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
Привет! По событию таймера меняются фотки. У себя дома - все работает превосходно.
Онлайн - нет непрерывности между переходами. Фотка пропадает и через 1-2 сек. появляется новая. После того, как круг пройдет - все нормально. Подскажите, как можно этого избежать? import com.greensock.*; var xmlList:XMLList; var slideNum:Number = 0; var imgLoader:Loader = new Loader(); var slideTimer:Timer = new Timer(5000); var mcLoader:Loader; var total:Number; var xml:XML = new XML(); var loader:URLLoader = new URLLoader(); loader.load(new URLRequest("images.xml")); loader.addEventListener(Event.COMPLETE, onComplete); function onComplete(event:Event):void { xml = XML(event.target.data); xmlList = xml.children(); imgText.wordWrap = true; imgTitle.text = xml.image[slideNum].@title.toString(); imgText.text = xml.image[slideNum].@text.toString(); imgLoader.load(new URLRequest(xml.image[slideNum].@src)); total = xmlList.length(); TweenLite.from(imgLoader, 2, {alpha:0}); imgLoader.x = 0; imgLoader.y = 0; master_mc.addChild(imgLoader); } slideTimer.addEventListener(TimerEvent.TIMER, onSlideTimer); // Timer btnPa.addEventListener(MouseEvent.CLICK, PauseSlide); // Button btnSt.addEventListener(MouseEvent.CLICK, StartSlide); // Button function changeText(slideNum:Number):void { imgTitle.text = xml.image[slideNum].@title.toString(); imgText.text = xml.image[slideNum].@text.toString(); imgLoader.load(new URLRequest(xml.image[slideNum].@src)); imgLoader.x = 0; imgLoader.y = 0; master_mc.addChild(imgLoader); TweenLite.from(imgLoader, 2, {alpha:0}); } //--------------------------------------------------------------------- Timer function onSlideTimer(event:TimerEvent):void { if (slideNum == total - 2) { slideNum = 0; } else { slideNum++ ; } changeText(slideNum); } //--------------------------------------------------------------------- Buttons Commands function PauseSlide(event:MouseEvent):void { slideTimer.stop(); } function StartSlide(event:MouseEvent):void { slideTimer.start(); } |
|
|||||
|
Lorem ipsum
|
подгрузи сначала картинки — мы ж не в Китае =) инет у нас медленный. вот слайды и не поспевают первый раз — ты ж не ждешь загрузки изображения. а второй раз — они уже в кэше и все ок...
UPD а фотка старая пропадает, потому что у тебя один лоадер на всех. когда ты загружаешь в него новую фотку — старая пропадает (содержимое imgLoader очищается) другое дело что я теперь не понимаю что у тебя может быть по второму кругу "нормально", если у тебя все равно старая фотка пропадает мгновенно, а новая вылазит фэйдом? разве что ты так и задумывал?
__________________
Поймай яблоко 2! Последний раз редактировалось Zebestov; 16.03.2010 в 06:01. |
|
|||||
|
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
Подскажи как правильно это сделать?
Как сделать по правильному?)))) СпасибО! |
|
|||||
|
Загрузил картинку - плавно показал ее. Загрузил вторую картинку - плавно показал вторую картинку. Загрузил третью картинку - плавно показал третью картинку. Загрузил,.. надоело печатать, в общем пусть пока три будет. Как только третья, последняя загрузилась, начинаешь их плавно менять через определенный интервал, например через 30 кадров или по таймеру.
__________________
Гоночка |
|
|||||
|
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
Цитата:
1. загрузил, плавно показал первую 2. загрузил, плавно показал вторую ... *. как только последняя загрузилась, начинаешь плавно менять не понял. т.е. "плавно показать" и "менять" - разные действия? Вы уверены? |
|
|||||
|
я бы сделал так:
1. загрузил первую, 2. показал ее, 3. запустил таймер с нужным интервалом, 4. таймер сработал, 5. проверяем загрузилось ли след. изображение, 5.1 если да, -> 2. 5.2 если нет ждем окончания загрузки и потом, -> 2. |
|
|||||
|
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
А можно ли как-нибудь сразу все загрузить?
|
|
|||||
|
сразу все?
ну если вам грузить 10 изображений и они маленькие, то конечно, дождаться пока они загрузятся, а потом их отображать. но а если их может быть 20, 50? зачем ждать пока такое кол - во загрузится, чем вам не подходит, то что описали выше? с нормальной скоростью соединения, а так я думаю почти везде, все будет выглядеть, как будто у вас все загружено, ну если конечно интервал между показом не мс. |
|
|||||
|
>>не понял. т.е. "плавно показать" и "менять" - разные действия? Вы уверены?
Я не не понял чего вы непоняли, тот пункт, где понимать ничего не надо. Я то-ж подумал и дописал вашу галерею, теперь она правльная. /*на сцене текстовые поля titleTxt infoTxt progressTxt и мовиклип на котором будут показываться рисунки master */ import flash.filters.*; var xmlList:XMLList; var startCount:int = 0; var imgLoader:Loader = new Loader(); var mcLoader:Loader; var total:Number; var xml:XML = new XML(); var loader:URLLoader = new URLLoader(); var alphaEf:Number = 0; var стартерРисунков:Boolean; var паузаМеждуРисунками:int = 4; var path:String = 'http://www.murmadillo.tut.su/m/d3/'; var bmd:BitmapData = new BitmapData(800,600); var bm:Bitmap = new Bitmap(bmd); var пауза:Boolean = true; master.addChild(bm); titleTxt.filters = [new GlowFilter(0xFFFFFF)]; infoTxt.filters = [new GlowFilter(0xFFFFFF)]; loader.load(new URLRequest(path+"images.xml?=2")); loader.addEventListener(Event.COMPLETE, onComplete); addEventListener(Event.ENTER_FRAME, alphaEffectEnterFrameHandler); imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaderCompleteHandler); imgLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); function alphaEffectEnterFrameHandler(e:Event):void{ if (стартерРисунков&&пауза) { imgLoader.alpha = alphaEf+=0.1; if (alphaEf>паузаМеждуРисунками){ alphaEf = 0; bmd.draw(imgLoader); imgLoader.unload(); titleTxt.text = xmlList[startCount].@title; infoTxt.text = xmlList[startCount].@text; imgLoader.load(new URLRequest(path+xmlList[startCount++].@src)); стартерРисунков = false; trace(startCount); if (startCount>xmlList.length()-1) startCount=0; } } if (!пауза) progressTxt.text = 'ОСТАНОВЛЕНО'; } function onComplete(event:Event):void { xml = XML(event.target.data); xmlList = xml.children(); titleTxt.wordWrap = true; titleTxt.text = xmlList[startCount].@title; infoTxt.text = xmlList[startCount].@text; imgLoader.load(new URLRequest(path+xmlList[startCount].@src)); total = xmlList.length(); imgLoader.x = 0; imgLoader.y = 0; master.addChild(imgLoader); alphaEf = 0; } function imgLoaderCompleteHandler(e:Event):void{ imgLoader.alpha = alphaEf = 0; стартерРисунков = true; progressTxt.text = 'Загружено'; } function progressHandler(e:ProgressEvent):void{ progressTxt.text = '%'+(e.bytesTotal/e.bytesLoaded).toFixed(2); } stopBtn.addEventListener(MouseEvent.CLICK, stopBtnHandler); // Button startBtn.addEventListener(MouseEvent.CLICK, startBtnHandler); // Button //--------------------------------------------------------------------- Buttons Commands function stopBtnHandler(event:MouseEvent):void { пауза = false; } function startBtnHandler(event:MouseEvent):void { пауза = true; }
__________________
Гоночка |
|
|||||
|
Регистрация: Sep 2007
Адрес: 52° 31′ N, 13° 24′ O
Сообщений: 55
|
Alex Lexcuk , спасибо! Но все по-другому... честно, сам бы так не смог. Не могу знаешь что сделать? - Чтоб слайдшоу не начиналось автоматически, а с нажатием кнопки startBtn. Пытаюсь сделать, но никак не могу, чтоб первая фотка была загружена. т.е. не пустое окно открывалось, а с фоткой и стояло на паузе. Если не трудно, подскажи. Два дня сижу.
За код спасибо! Последний раз редактировалось Stanislavsky; 18.03.2010 в 01:10. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|