![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 12
|
Есть XML-слайдер (см. вложенный исходник).
Необходимо сделать так, чтобы по нажатию кнопок подгружались разные xml файлы (то есть, в зависимости от нажатой кнопки, была видна каждый раз разная галерея). Например, нажимаем кнопку Auto ID - подгружается файл datas.xml. Нажимаем кнопку "Торговое оборудование" - подгружается файл datas1.xml. Как это лучше реализовать? |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 12
|
Добавила пока следующее:
btn1.addEventListener(MouseEvent.CLICK,btn1Clicked); btn2.addEventListener(MouseEvent.CLICK,btn2Clicked); // btn3.addEventListener(MouseEvent.CLICK,btn3Clicked); // btn4.addEventListener(MouseEvent.CLICK,btn4Clicked); // btn5.addEventListener(MouseEvent.CLICK,btn5Clicked); // btn6.addEventListener(MouseEvent.CLICK,btn6Clicked); function btn1Clicked(e:MouseEvent):void { loadXML("datas.xml"); } function btn2Clicked(e:MouseEvent):void { loadXML("datas1.xml"); } |
|
|||||
|
приведите код loadXML.
вероятно он единожды сохраняет загруженную XML и дальше не реагирует.
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 12
|
Это?
До меня пока не доходит, что конкретно нужно изменить... Последний раз редактировалось maritca; 22.06.2012 в 14:29. Причина: UPD |
|
|||||
|
Ну, здесь всё хорошо. А что делает ф-ция parseXML ?
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 12
|
На всякий случай, копирую вместе с ф-цией loadImages:
function parseXML(e:Event):void{ xml = new XML(e.target.data); totalImages = xml.children().length(); loadImages(); } function loadImages():void{ for(var i:int = 0; i<totalImages; i++){ var loader:Loader = new Loader(); loader.load(new URLRequest("images/"+String(xml.children()[i].@src))); images.push(loader); imagesLink.push(xml.children()[i].@link);//------------------------------------------- imagesText.push(xml.children()[i].@text);//------------------------------------------- loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); } } Последний раз редактировалось maritca; 22.06.2012 в 14:48. |
|
|||||
|
как вижу у вас заполняется массив images, и они далее добавляются в отображение.
А при повторной загрузке картинки всё еще остаются, и массив всё еще со старыми данными. ваша задача - перед каждой загрузкой удалить картинки с визуального отображения, и очистить массив. - скажите где располагается images? (где делается addChild для его элементов)
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 12
|
Гм... давайте я приведу весь код целиком...
import com.greensock.*; import com.greensock.easing.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.navigateToURL; var xml:XML; var images:Array = new Array(); var imagesLink:Array = new Array();//------------------------------------ var imagesText:Array = new Array();//------------------------------------ var totalImages:Number; var nbDisplayed:Number =3; var imagesLoaded:int = 0; var slideTo:Number = 0; var imageWidth = 131; var container_mc:MovieClip = new MovieClip(); slider_mc.addChild(container_mc); container_mc.mask = slider_mc.mask_mc; function loadXML(file:String):void{ var xmlLoader:URLLoader = new URLLoader(); xmlLoader.load(new URLRequest(file)); xmlLoader.addEventListener(Event.COMPLETE, parseXML); } function parseXML(e:Event):void{ xml = new XML(e.target.data); totalImages = xml.children().length(); loadImages(); } function loadImages():void{ for(var i:int = 0; i<totalImages; i++){ var loader:Loader = new Loader(); loader.load(new URLRequest("images/"+String(xml.children()[i].@src))); images.push(loader); imagesLink.push(xml.children()[i].@link);//------------------------------------------- imagesText.push(xml.children()[i].@text);//------------------------------------------- loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); } } function onProgress(e:ProgressEvent):void{ loading_txt.text = "Loading " + imagesLoaded + " / " + totalImages; } function onComplete(e:Event):void{ imagesLoaded++; if(imagesLoaded == totalImages){ loading_txt.text = ""; createImages(); } } function createImages():void{ for(var i:int = 0; i < images.length; i++){ var bm:Bitmap = new Bitmap(); var holder:MovieClip=new MovieClip(); //------------------------------------ bm = Bitmap(images[i].content); bm.smoothing = true; holder.y= i*imageWidth;//------------ holder.addChild(bm);//-------------- //bm.y = i*imageWidth; //var currTxt:imText=new imText(); //currTxt.txt.text=imagesText[i]; //currTxt.y=50; //holder.addChild(currTxt); holder.addEventListener(MouseEvent.CLICK,goSite); holder.id=i; container_mc.addChild(holder); //-------------------------- } } function goSite(e:MouseEvent) { var mc:MovieClip=MovieClip(e.target); navigateToURL(new URLRequest(imagesLink[mc.id])); } previous_btn.addEventListener(MouseEvent.CLICK,slideLeft); next_btn.addEventListener(MouseEvent.CLICK,slideRight); function slideLeft(e:MouseEvent):void{ slideTo -= nbDisplayed; slideContainer(); } function slideRight(e:MouseEvent):void{ slideTo += nbDisplayed; slideContainer(); } function slideContainer():void{ if(totalImages - slideTo < nbDisplayed) slideTo = totalImages - nbDisplayed; if(slideTo < 0) slideTo = 0; TweenLite.to(container_mc,.5,{y:-slideTo*imageWidth,ease:Quad.easeIn}); } //------------------------------------------------------------------------- //private function setUpListeners():void { btn1.addEventListener(MouseEvent.CLICK,btn1Clicked); btn2.addEventListener(MouseEvent.CLICK,btn2Clicked); // btn3.addEventListener(MouseEvent.CLICK,btn3Clicked); //btn4.addEventListener(MouseEvent.CLICK,btn4Clicked); //btn5.addEventListener(MouseEvent.CLICK,btn5Clicked); // btn6.addEventListener(MouseEvent.CLICK,btn6Clicked); //} function btn1Clicked(e:MouseEvent):void { loadXML("datas.xml"); } function btn2Clicked(e:MouseEvent):void { loadXML("datas1.xml"); } |
|
|||||
|
в ф-ции createImages в самом начале пропишите:
а в ф-ции loadImages в самом начале строку:
__________________
adobe AS3 manual Последний раз редактировалось strangedk; 22.06.2012 в 15:21. Причина: ошибся, не holder а container_mc |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 12
|
Сделала, получила
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at FlowerMenu/loadImages() at FlowerMenu/parseXML() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete() |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|