         );
         loader.load(new URLRequest("file:parameters.xml"));
     }
+
+    /**
+     * Convenience function to log a warning, since we don't keep around
+     * a Log instance.
+     */
+    protected static function logWarning (msg :String) :void
+    {
+        Log.getLog(ParameterUtil).warning(msg);
+    }
 }
 }

     */
    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,

package com.threerings.util {

import flash.display.DisplayObject;
import flash.display.LoaderInfo;

import flash.events.Event;
import flash.events.IOErrorEvent;
