In questo caso ti conviene crearti un evento personalizzato (una classe che estende Event) per poi farlo dispacciare dalla tua xmlImages passando come parametro quello che vuoi (nel tuo caso l'array mi pare di capire).
Esempio:
Codice:
package
{
import flash.events.Event;
public class XMLImagesEvent extends Event
{
public static const LOAD_COMPLETE:String = "loadComplete";
public var imageArray:Array;
/**
* Constructor
*/
public function XMLImagesEvent(type:String, a:Array)
{
super(type);
imageArray = a;
}
/** @inheritDoc **/
public override function clone():Event
{
return new XMLImagesEvent(type, imageArray);
}
}
}
Poi semplicemente dal tuo main devi ascoltare questo evento
Codice:
import xmlImages;
var readXml:xmlImages = new xmlImages();
readXml.addEventListener(XMLImagesEvent.LOAD_COMPLETE, handleXMLloaded);
// ho cambiato il nome del metodo, così ha più senso
readXml.loadXML("images.xml");
private function handleXMLloaded(e:XMLImagesEvent):void
{
// qui mi vado a prendere l'array
trace(e.imageArray);
}
Infine l'evento lo dispacci una volta caricato l'xml nella tua classe:
Codice:
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.XMLDocument;
public class xmlImages extends Sprite
{
public function xmlImages(){
super();
}
public function getXml(radix:String):void
{
var urlReq:URLRequest = new URLRequest(radix);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, handleXMLloaded);
loader.load(urlReq);
}
private function handleXMLloaded(e:Event):void
{
var _xml:XML = new XML(loader.data);
_xml.ignoreWhite = true;
var i:int = 0;
var myArray:Array = new Array();
for each (var images:XML in _xml.image) {
trace(images); // OK
myArray[i] = images; // OK - L'ARRAY VIENE MODIFICATO
i++;
}
dispatchEvent(new XMLImagesEvent(XMLImagesEvent.LOAD_COMPLETE, myArray);
}
}
}
Scritto al volo dall'ufficio, cmq dovrebbe funzionare.
Segnalibri