Non si tratta effettivamente di un problema, ma di un comportamento normale quando si ha a che fare con linguaggi come actionscript che lavorano in maniera asincrona.
In pratica per ottenere dei dati caricati dall'esterno e poterli utilizzare all'interno di flash, senza doversi spostare di frame o ricaricare la pagina (come faresti con html se dovessi richiamare dei dati diversi nella stessa pagina), si utilizzano gli eventi, canalizzati normalmente all'interno di funzioni specifiche.
Nel nostro caso, ad esempio, l'evento attivato dal caricamento esterno sarà "COMPLETE", e solo dentro la funzione corrispondente, impostata nell'addEventListener è possibile gestire le variabili recuperate dall'esterno.
Ora, considerato che la tua è una classe esterna, puoi utilizzare il metodo dispatchEvent all'interno della classe per creare un canale per l'evento COMPLETE da usare sulla classe stessa quando ti serve dentro la document class.
codice:
package com.utils {
import flash.display.Sprite;
import flash.events.*;
import flash.net.*;
import flash.text.TextField;
public class URLLoaderExample extends Sprite {
public var imgPathValue:String;
//COSTRUTTORE
public function URLLoaderExample(url:String) {
var loader:URLLoader = new URLLoader();
imgPathValue=new String();
configureListeners(loader);
var request:URLRequest = new URLRequest(url);
try {
loader.load(request);
trace("fuori la funzione " + imgPathValue);
} catch (error:Error) {
trace("Unable to load requested document.");
}
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
}
private function completeHandler(event:Event):void {
imgPathValue = new String(event.target.data);
trace("dentro la funzione " + imgPathValue);
dispatchEvent(event);
}
public function get imgPathValue ():String {
return imgPathValue;
}
}
}
Dentro alla document class dovrai creare un'istanza di URLLoaderExample e poi gli associerai l'evento COMPLETE.
Codice PHP:
var myUL:URLLoaderExample = new URLLoaderExample ("test.php");
myUL.addEventListener(Event.COMPLETE, completeHandler);
function completeHandler (evt:Event) {
trace(evt.target.imgPathValue); // restituisce: img/img_home/image11.jpg
}