Проблема в получении значений из массива - PullRequest
0 голосов
/ 08 июля 2011
var xml:XML;
var urlL:URLLoader =  new URLLoader();
var xmlArray:Array = new Array();
var i:uint;

urlL.dataFormat = URLLoaderDataFormat.TEXT;
urlL.addEventListener(Event.COMPLETE, onLoadedAction);
urlL.load(new URLRequest("list.xml"));
function onLoadedAction(e:Event):void {
    try {
        xml = new XML(e.target.data);
        xml.ignoreWhitespace = true;
        for (i = 0; i<xml.video.length(); i++) {
            xmlArray.push(xml.video.path[i]);
            //trace(xmlArray[i]);
        }
    } catch (e:Error) {
        trace(e.message);
    }
}
trace(xmlArray[0]);

Это мой код.Когда я отслеживаю 0-е значение индекса из массива, я получаю «неопределенное» на панели вывода.

В чем ошибка?

Ответы [ 3 ]

2 голосов
/ 08 июля 2011

Из представленного кода выглядит, как будто вы пытаетесь отследить значение до того, как XML сможет полностью загрузиться (вне функции onLoadedAction). Если вы переместите свою трассировку в конец (внутри) функции onLoadedAction, вы должны увидеть результат.

1 голос
/ 08 июля 2011
//Imports
import flash.errors.IOError;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;

//Variables
var xml:XML;
var xmlLoader:URLLoader = new URLLoader();
var xmlArray:Array = new Array();

//Load XML
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, xmlLoaderErrorEventHandler);
xmlLoader.addEventListener(Event.COMPLETE, xmlCompleteEventHandler);
xmlLoader.load(new URLRequest("list.xml"));

//XML Loader Error Event Handler
function xmlLoaderErrorEventHandler(evt:IOErrorEvent):void
{
     throw new IOError(evt.text);
}

//XML Complete Event Handler
function xmlCompleteEventHandler(evt:Event):void
{
     evt.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, xmlLoaderErrorEventHandler);
     evt.currentTarget.removeEventListener(Event.COMPLETE, xmlCompleteEventHandler);

     xml = new XML(evt.currentTarget.data);

     for each  (var element:XML in xml.video.path)
               xmlArray.push(element);

     trace(xmlArray);
}
0 голосов
/ 17 июля 2011

Попробуйте изменить это:

xmlArray.push(xml.video.path[i]);

К этому:

xmlArray.push(xml.video..path[i]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...