Tienes un problema de "logica".
Tu estas "entendiendo" el codigo de forma totalmente lineal, es decir esperas que los eventos se ejecuten de acuerdo a como escribes el codigo, "Lo que escribo primero, se ejecuta primero", esto es una concepción erronea.
Lo primero que haces es declarar los objectos y variables que vas a usar acto seguido, haces una peticion a un recurso externo y por ultimo quieres hacer uso de la variable obtenida, esto queda claro, pero te saltas un paso muy importante.
El que una instrucción este escrita antes que otra no significa que se ejecuta primero. A lo que voy es que la linea
Código actionscript:
Ver originaltrace ("---books-----"+VideosR+"------books-------");//DEVUELVE NULL
Se ejecuta antes de que el XML sea cargado, es cuestion de milisegundos pero asi es verifica poniendo un trace y veras el resultado:
Código actionscript:
Ver originalvar xmldata2:XML;
var xmlLoaders:URLLoader = new URLLoader();
var xmlDatas:XML = new XML();
var VideosR:XMLList;
xmlLoaders.addEventListener(Event.COMPLETE, LoadXMLs);
xmlLoaders.load(new URLRequest("xml/canales.xml"));
function LoadXMLs(e:Event):void
{
xmlDatas=new XML(e.target.data);
VideosR=xmlDatas.canal.video.(@tags=="Paperback" || @tags=="caca");
dispatchEvent(new Event(Event.COMPLETE));
trace (" Llego el XML ---books-----"+VideosR+"------books-------");//DEVUELVE LOS DATOS
}
trace ("Esto se ejecuta antes de que llegue el XML ---books-----"+VideosR+"------books-------");//DEVUELVE NULL
Saludos!!