Есть много вопросов, похожих на мой, но ни один из них не решает конкретно мою проблему.
У меня есть этот класс -
package com.test
{
import flash.events.*;
import flash.net.*;
import com.test.LogUtils;
import mx.logging.ILogger;
public class LoadExtUrl extends EventDispatcher
{
private var baseUrl:String;
private var log:ILogger = LogUtils.getLogger(LoadExtUrl);
public function LoadExtUrl()
{
log.debug ("100 In LoadExtUrl()");
super(null);
}
public function loadBaseUrl():String
{
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, urlLoader_completeHandler);
function urlLoader_completeHandler(event:Event):void
{
var loader:URLLoader = URLLoader(event.target);
this.baseUrl = loader.data.baseurl;
dispatchEvent(new Event("GOTRESULTS"));
log.debug ("200 In LoadExtUrl, baseUrl="+this.baseUrl);
}
loader.load(new URLRequest("sri-config-files/url.properties"));
log.debug ("300 In LoadExtUrl, baseUrl="+this.baseUrl);
return this.baseUrl;
}
}
}
Теперь я хочу прочитать значение baseUrl во многих других классах.
В другом классе у меня есть следующий код -
public class UrlHelper
{
public static var myLoadExtUrl:LoadExtUrl = new LoadExtUrl();
public static var baseUrl:String;
public function UrlHelper()
{}
public static function getBaseUrl():void
{
myLoadExtUrl.addEventListener("GOTRESULTS", xmlLoadCompleted);
log.debug("400 In UrlHelper, baseUrl ="+baseUrl);
}
private static function xmlLoadCompleted(e:Event):void
{
baseUrl=myLoadExtUrl.loadBaseUrl();
log.debug("500 In UrlHelper, baseUrl ="+baseUrl);
}
}
Последовательность ведения журнала -
100 In LoadExtUrl()
300 In LoadExtUrl, baseUrl=null
200 In LoadExtUrl, baseUrl=http://abcxyz.com:8080/
400 In UrlHelper, baseUrl =null --> here only I need the value
Как я могу решить эту проблему?