![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2008
Сообщений: 11
|
Загружаю случайную картинку из списка в xml файле. В xml файле прописан атрибут к каждой картинке.
По клику картинка меняется. Вопрос: как узнать атрибут той картинки по которой кликнули? Может кто знает, как решить проблему. Буду благодарен. Проект в flashdevelop во вложении. package { import flash.display.Bitmap; import flash.display.DisplayObject; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.net.URLLoader; import flash.net.URLRequest; public class Main extends Sprite { private const XML_PATH:String = "data.xml"; private var xml:XML; private var Pict:Bitmap; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var xmlLoader:URLLoader = new URLLoader(); xmlLoader.load(new URLRequest(XML_PATH)); xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); } private function xmlLoaded(e:Event):void { e.target.removeEventListener(Event.COMPLETE, xmlLoaded); xml = new XML(e.target.data); var randomValue:uint = Math.floor(Math.random() * (xml.settings.pictures.children().length() )); var PictLoader:Loader = new Loader(); PictLoader.load(new URLRequest(xml.settings.pictures.children()[randomValue].@url)); PictLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, PictLoaded); } private function PictLoaded(e:Event):void { e.target.removeEventListener(Event.COMPLETE, PictLoaded); Pict = e.target.content as Bitmap; Pict.smoothing = true; var container:Sprite = new Sprite(); container.addChild(Pict); addChild(container); container.addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:Event):void { trace('здесь нужно выводить атрибут "vid" из xml соответствующий той картинке на которую кликают. Как???'); init(); } } } |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 149
|
Допустим создать свой класс картинки MyImage у которого есть свойство vid
И зачем вы при каждом клике повторно грузите тот же xml файл? Можно так package { import flash.display.Bitmap; import flash.display.DisplayObject; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.net.URLLoader; import flash.net.URLRequest; public class Main extends Sprite { private const XML_PATH:String = "data.xml"; private var xml:XML; private var pict:Bitmap; private var imageList:Array = new Array(); private var imageContener:Sprite; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var xmlLoader:URLLoader = new URLLoader(); xmlLoader.load(new URLRequest(XML_PATH)); xmlLoader.addEventListener(Event.COMPLETE, xmlLoadedHandler); } private function xmlLoadedHandler(e:Event):void { xml = new XML(e.target.data); var xmlList:XMLList = xml.settings.pictures.children(); for (var i:int = 0; i < xmlList.length(); i++) { var imgXML:XML = new XML(xmlList[i]); var myImage:Object = new Object(); myImage.url = imgXML.@url; myImage.vid = imgXML.@vid; imageList.push(myImage); } imageContener = new Sprite(); addChild(imageContener); imageContener.addEventListener(MouseEvent.CLICK, imageClickHandler); imageClickHandler(null); } private function imageClickHandler(e:MouseEvent):void { var randomValue:uint = Math.floor(Math.random() * imageList.length); trace('vid = ' + imageList[randomValue].vid); var loader:Loader = new Loader(); loader.load(new URLRequest(imageList[randomValue].url)); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoadedHandler); } private function imageLoadedHandler(e:Event):void { pict = e.target.content as Bitmap; pict.smoothing = true; imageContener.addChild(pict); } } } Последний раз редактировалось ObOs; 17.05.2012 в 11:54. |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 11
|
Большое спасибо, ObOs! Все заработало как надо.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 06:46. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| xml flash |
|
|