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

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

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

Регистрация: Feb 2009
Сообщений: 5
Question for each

не могу никак понять, почему компилятор не входит в цикл for each.
переменная externalXML не пуста.
Код AS3:
package com
{
 
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
 
	public class XMLengine
	{
		public var externalXML:XML;
		public var loader:URLLoader 
		public var request:URLRequest;
 
		public function XMLengine(xml:String)
		{
			loader = new URLLoader();
			request = new URLRequest(xml);
		}
		public function Load():void
		{
			loader.addEventListener(Event.COMPLETE, onComplete);
			loader.load(request);
		}
 
		function onComplete(event:Event):void
		{
			loader = event.target as URLLoader;
			if (loader != null)
			{
				this.externalXML = new XML(loader.data);
				this.Compile();
				trace(this.externalXML.toXMLString());
			}
			else
			{
				trace("loader is not a URLLoader!");
			}
		}
 
		public function Compile():void
		{
			var buttonTotal:Number;
			for each (var property:XML in externalXML.item)
			{
				//var q:int = String(property.@quantity);
				var p:String = String(property.button);
				buttonTotal++;
				trace(p);
			}
			trace(buttonTotal);
		}
 
	}
 
}
естественно, что он сразу вываливает в output значение buttonTotal:
NaN

вот такая XML грузится в externalXML
Код:
<objects>
<object>
<button> 1st Floor </button>
<img>./a1.jpg</img>
<zoom cx="40" cy="40" w="30" h="30"> Kitchen </zoom>
<zoom cx="140" cy="40" w="30" h="30"> Living Room </zoom>
</object>
</objects>

Старый 06.02.2009, 08:19
BARTLEBY вне форума Посмотреть профиль Отправить личное сообщение для BARTLEBY Найти все сообщения от BARTLEBY
  № 2  
Ответить с цитированием
BARTLEBY
[+4 02.11.07]
[+1 18.12.07]
 
Аватар для BARTLEBY

Регистрация: Oct 2006
Сообщений: 100
Код AS3:
			public function Compile():void
		{
			var buttonTotal:Number = 0;
			 var test:XMLList  = externalXML.object.children();
			for each (var property:XML in test)
			{
				//var q:int = String(property.@quantity);
				var p:String = String(property);
				buttonTotal++;
				trace(p);
			}
			trace(buttonTotal);
		}


Последний раз редактировалось BARTLEBY; 06.02.2009 в 08:54.
Старый 06.02.2009, 08:53
Aldvin вне форума Посмотреть профиль Отправить личное сообщение для Aldvin Найти все сообщения от Aldvin
  № 3  
Ответить с цитированием
Aldvin

Регистрация: May 2008
Сообщений: 52
Перебор правильно делать так: (с указанием имени перебираемой XMLNode)
Код AS3:
for each (var property:XML in externalXML.object)
ещё... неплохо было бы
Код AS3:
var buttonTotal:Number;
обнулить
Код AS3:
var buttonTotal:Number=0;
Ещё. Я подразумаеваю что функцыя Load() где-то вызывается...

Старый 06.02.2009, 23:26
AndrX вне форума Посмотреть профиль Отправить личное сообщение для AndrX Найти все сообщения от AndrX
  № 4  
Ответить с цитированием
AndrX

Регистрация: Feb 2009
Сообщений: 5
спасибо большое.
то есть моя принципиальная ошибка заключалась в том, что нужно описывать XMLList названием тега и вызовом потомков...
Код AS3:
var test:XMLList  = externalXML.object.children();
Цитата:
Ещё. Я подразумаеваю что функцыя Load() где-то вызывается...
да, конечно. прямо в 1ом кадре пока я описываю этот контрол и "играюсь" с ним, как он работает и т.д.

Добавлено через 9 минут
Цитата:
Перебор правильно делать так: (с указанием имени перебираемой XMLNode)
Код AS3:

for each (var property:XML in externalXML.object)
а вот так я писал вчера

я просто уже в не понимании, от чего ошибка перебирал все варианты.
а сейчас попробовал его же. и работает наверное, надо было тачку перезагрузить... наверное, Flash глючило

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

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

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


 


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


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