diff --git a/src/as/com/threerings/util/ParameterUtil.as b/src/as/com/threerings/util/ParameterUtil.as new file mode 100644 index 000000000..766b1f38c --- /dev/null +++ b/src/as/com/threerings/util/ParameterUtil.as @@ -0,0 +1,58 @@ +package com.threerings.util { + +import flash.display.DisplayObject; + +import flash.events.Event; +import flash.events.IOErrorEvent; + +import flash.net.URLLoader; +import flash.net.URLRequest; + +/** + * A utility for loading parameters from an XML file when run from + * the local filesystem. + * + * The file "parameters.xml" should reside in the current directory and contains: + * + * + * + * + */ +public class ParameterUtil +{ + /** + * Get the parameters. + * Note: the callback function may be called prior to this method + * returning. + */ + public static function getParameters (disp :DisplayObject, callback :Function) :void + { + var url :String = disp.root.loaderInfo.url; + // normal parameters + if (url == null || 0 != url.indexOf("file:")) { + callback(disp.root.loaderInfo.parameters); + return; + } + + // instead read from XML + var loader :URLLoader = new URLLoader(); + loader.addEventListener(IOErrorEvent.IO_ERROR, + function (event :Event) :void { + trace("Error loading params: " + event); + callback(disp.root.loaderInfo.parameters); + } + ); + loader.addEventListener(Event.COMPLETE, + function (event :Event) :void { + var data :XML = XML(loader.data); + var params :Object = {}; + for each (var param :XML in data..param) { + params[param.@name] = String(param.@value); + } + callback(params); + } + ); + loader.load(new URLRequest("file:parameters.xml")); + } +} +}