Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   for each (http://www.flasher.ru/forum/showthread.php?t=121046)

AndrX 06.02.2009 05:35

for each
 
не могу никак понять, почему компилятор не входит в цикл for each.:wacko:
переменная 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>


BARTLEBY 06.02.2009 08:19

Код 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);
                }


Aldvin 06.02.2009 08:53

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

for each (var property:XML in externalXML.object)

ещё... неплохо было бы
Код AS3:

var buttonTotal:Number;

обнулить
Код AS3:

var buttonTotal:Number=0;

Ещё. Я подразумаеваю что функцыя Load() где-то вызывается...

AndrX 06.02.2009 23:26

спасибо большое. :victory:
то есть моя принципиальная ошибка заключалась в том, что нужно описывать XMLList названием тега и вызовом потомков...
Код AS3:

var test:XMLList  = externalXML.object.children();

Цитата:

Ещё. Я подразумаеваю что функцыя Load() где-то вызывается...
да, конечно. прямо в 1ом кадре :) пока я описываю этот контрол и "играюсь" с ним, как он работает и т.д.

Добавлено через 9 минут
Цитата:

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

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

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


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

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