Код | package { import flash.display.MovieClip; import flash.net.URLRequest; import flash.net.URLVariables; import flash.events.*; import flash.net.*;
public class XMLDataLoader extends MovieClip { var path_to_script:String; private var req:URLRequest=new URLRequest(); private var loader:URLLoader = new URLLoader(); private var list:XMLList = new XMLList(); private var regionsXML:XMLList = new XMLList(); private var variables:URLVariables = new URLVariables(); public var currentKPI:String = 'block'; public var currentRegion:String = 'KI'; public var displayLevel:String = 'all'; public var lessisbetter:int = 1; public var mapRegionData:Object; public var mapRegionDataArray:Array = new Array(); public var mapRegionDataArray1:Array = new Array();
public function XMLDataLoader() {
req.url = "/index.php"; req.method = URLRequestMethod.GET; variables.kpi = currentKPI; variables.lessisbetter = lessisbetter; variables.level = displayLevel; req.data = variables; loader.dataFormat = URLLoaderDataFormat.TEXT; loader.addEventListener(Event.COMPLETE, completeHandler);
}
public function loadXMLData():void { try { loader.load(req); } catch (error:Error) { trace("Unable to load URL"); } }
private function completeHandler(event:Event) { regionsXML = XMLList(event.target.data).oblasts.oblast; for each (var item:XML in regionsXML) { mapRegionData = new Object(); mapRegionData.region = item. @ name.toString(); mapRegionData.region_short = item. @ short.toString(); mapRegionDataArray.push(mapRegionData); //trace(mapRegionDataArray.length); } trace('Data loaded'); addEventListener("customEvent", handleEvent); dispatchEvent(new Event("customEvent")); }
public function handleEvent(event:Event):void { mapRegionDataArray1=mapRegionDataArray; }
}
}
|
Main.as Код |
package { import flash.display.Sprite; import XMLDataLoader; public class Main extends Sprite { private var xmlDataLoader:XMLDataLoader; public static const LIFE_COLOR:Number= 0xFF0000; public static const KS_COLOR:Number = 0x0182FE; public static const MTS_COLOR:Number = 0x00C590; public function Main() { xmlDataLoader = new XMLDataLoader; xmlDataLoader.loadXMLData(); trace(xmlDataLoader.mapRegionDataArray1[0].short);
}
} }
|
В xmlDataLoader получаю данные, запихиваю в массив, чтобы обрабатывать его в Main Получается что когда я вызываю xmlDataLoader.mapRegionDataArray1[0].short из Main, то похоже в этот момент переменная ещё не существует, потому что если сделать вывод в completeHandler, то всё конечно ок. Какой-то евент нужно использовать или как-то по другому код организовать надо?
|