【发布时间】:2014-07-18 21:40:44
【问题描述】:
我想获取 xml 数据并将其放入对象数组中。我使用这个公共方法:
package
{
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class parseXML_public
{
static private var myXML:XML;
static private var xml_array:Array=new Array;
public function parseXML_public() {
}
public static function crearXMLArray(s:String):Array{
loadXML(s);
return xml_array;
}
static private function loadXML(s:String):void
{
var myURLRequest:URLRequest;
var myURLLoader: URLLoader;
myURLRequest = new URLRequest();
myURLRequest.url = s;
myURLLoader = new URLLoader();
myURLLoader.addEventListener(Event.COMPLETE, onXMLComplete);
myURLLoader.load(myURLRequest);
}
static private function onXMLComplete(e:Event):void
{
myXML = new XML(e.target.data);
parseXML();
}
static private function parseXML():void
{
var i:Number;
var j:Number;
var nodos:Number;
var my_obj:Object;
nodos = Math.floor(myXML.*.*.length() / (myXML.*.length()));
for (i = 0; i < myXML.*.length(); i++) {
xml_array[i] = new Array();
for (j = 0; j < nodos; j++) {
my_obj = new Object();
my_obj.nombre = myXML.child(i).child(j).@nombre;
my_obj.posX = myXML.child(i).child(j).@posX;
my_obj.posY = myXML.child(i).child(j).@posY;
xml_array[i].push(my_obj);
}
}
//trace(xml_array); //--> It shows the array charged!
}
}
}
当我从主类调用数组时:
parseXML_public.crearXMLArray("xml/xml_tonalidades.xml"));
(如果我跟踪这个,数组是空的)我认为它与 URLLoader 和在返回之前等待它有关,但不知道该怎么做......
【问题讨论】:
标签: xml actionscript-3 class load external