/ Published in: ActionScript 3
Here is a Document Class that loads an external XML file.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
package { import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLLoaderDataFormat; import flash.system.Capabilities; import flash.text.TextField; import flash.text.TextFormat; public class Main extends Sprite { private var _xmlPath:String = "data.xml"; private var _xmlHasLoaded:Boolean = false; private var _xmlLoader:URLLoader; private var _xmlRequest:URLRequest; private var _dataXml:XML; private var _id:String; private var _title:String; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init():void { removeEventListener(Event.ADDED_TO_STAGE, init); loadDataXml(_xmlPath); } private function loadDataXml($xmlPath:String):void { trace("loadDataXml("+$xmlPath+")"); _xmlLoader = new URLLoader(); _xmlLoader.dataFormat = URLLoaderDataFormat.TEXT; _xmlLoader.addEventListener(Event.COMPLETE, onXmlLoader_COMPLETE); _xmlLoader.addEventListener(IOErrorEvent.IO_ERROR , onXmlLoader_IO_ERROR); _xmlRequest = new URLRequest(); if (Capabilities.playerType == "External") { _xmlRequest.url = $xmlPath; } else { _xmlRequest.url = $xmlPath + "?rand=" + Math.random(); } try { trace("try: urlLoader.load("+_xmlRequest.url+")"); _xmlLoader.load(_xmlRequest); } catch (error:Error) { trace("catch: Unable to load XML data."); } } private function onXmlLoader_COMPLETE(event:Event):void { trace("onXmlLoader_COMPLETE()"); _xmlLoader.removeEventListener(Event.COMPLETE, onXmlLoader_COMPLETE); _xmlLoader.removeEventListener(IOErrorEvent.IO_ERROR , onXmlLoader_IO_ERROR); _xmlHasLoaded = true; try { _dataXml = new XML(event.target.data); trace(_dataXml.toString()); start(); } catch (err:TypeError) { trace("Could not parse text into XML"); trace(err.message); } } private function onXmlLoader_IO_ERROR(event:IOErrorEvent):void { trace("onXmlLoader_IO_ERROR("+event+")"); trace("event.text: "+String(event.text)); } private function start():void { // Do something here _id =_dataXml.title.@id; trace("_id: "+_id); _title = _dataXml.title; trace("_title: "+_title); var tfmt:TextFormat = new TextFormat(); tfmt.size = 22; tfmt.font = "Arial"; var tf:TextField = new TextField(); tf.width = 549; tf.height = 399; tf.wordWrap = true; tf.multiline = true; tf.defaultTextFormat = tfmt; tf.condenseWhite = false; tf.border = true; tf.htmlText = _title; addChild(tf); } } } //////////////////////////////////////////////////////// // The XML file in this situation would // look like this and be called 'data.xml' // // <?xml version="1.0" encoding="utf-8"?> // <root> // <title id="001"><![CDATA[Hello World]]></title> // </root> // ////////////////////////////////////////////////////////