package { import flash.events.ErrorEvent; import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.net.URLLoader; import flash.net.URLRequest; public class GetElementText extends EventDispatcher { public var text:String; private var element:XML; private var textLoader:URLLoader; /** * Constrctor for new GetElementText instances. * @param array The array to be sorted. */ public function GetElementText() { } /** * Starts the GetElementText operation. */ public function load(element:XML):void { this.element = element; if (element.@src != undefined){ // load external text try { loaderCleaup(); textLoader = new URLLoader(); textLoader.addEventListener(Event.COMPLETE, loadCompleteHandler); textLoader.addEventListener(IOErrorEvent.IO_ERROR, loadErrorHandler); textLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loadErrorHandler); textLoader.load(new URLRequest(String(element.@src))); }catch(err:Error){ complete(); } }else{ // inline text text = String(element.text()); complete(); } } private function loadCompleteHandler(event:Event):void { text = textLoader.data; complete(); } private function loadErrorHandler(event:ErrorEvent):void { trace(event.text); complete(); } private function complete():void { loaderCleaup(); dispatchEvent(new Event(Event.COMPLETE)); } private function loaderCleaup():void { if (textLoader){ try { textLoader.close(); }catch(err:Error) {} textLoader.removeEventListener(Event.COMPLETE, loadCompleteHandler); textLoader.removeEventListener(IOErrorEvent.IO_ERROR, loadErrorHandler); textLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, loadErrorHandler); textLoader = null; } } } }