Показать сообщение отдельно
Старый 17.05.2012, 10:35
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 2  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
Допустим создать свой класс картинки MyImage у которого есть свойство vid

И зачем вы при каждом клике повторно грузите тот же xml файл?

Можно так
Код AS3:
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.