Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.05.2012, 04:17
Ar4er вне форума Посмотреть профиль Отправить личное сообщение для Ar4er Найти все сообщения от Ar4er
  № 1  
Ответить с цитированием
Ar4er

Регистрация: Apr 2008
Сообщений: 11
По умолчанию Значение атрибута из XML

Загружаю случайную картинку из списка в xml файле. В xml файле прописан атрибут к каждой картинке.
По клику картинка меняется. Вопрос: как узнать атрибут той картинки по которой кликнули?
Может кто знает, как решить проблему. Буду благодарен. Проект в flashdevelop во вложении.
Код 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;
 
		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();
   }
}	
}
Вложения
Тип файла: zip Вопрос.zip (45.4 Кб, 35 просмотров)

Старый 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.
Старый 17.05.2012, 12:20
Ar4er вне форума Посмотреть профиль Отправить личное сообщение для Ar4er Найти все сообщения от Ar4er
  № 3  
Ответить с цитированием
Ar4er

Регистрация: Apr 2008
Сообщений: 11
Большое спасибо, ObOs! Все заработало как надо.

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
xml flash

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:46.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.