 
 package com.threerings.util {
 
-import flash.display.Sprite;
+import flash.events.TimerEvent;
 
-import flash.events.Event;
+import flash.utils.Timer;
 
 /**
  * A simple mechanism for queueing functions to be called on the next frame.

        }

        // If no new functions were added while we were calling the current set,
        // then remove the listener.
        if (_methodQueue.length == 0) {
            _d.removeEventListener(Event.ENTER_FRAME, handleEnterFrame);
        }
    }

    /** A display object on which we listen for ENTER_FRAME. */
    protected static var _d :Sprite = new Sprite();

    /** The currently queued functions. */
    protected static var _methodQueue :Array = [];
}
}

    public static function callLater (fn :Function, args :Array = null) :void
    {
        _methodQueue.push([fn, args]);
        _t.start(); // starts the timer if it's not already running
    }

    /**
     * Handle a timer event: call any queued functions.
     */
    protected static function handleTimer (event :TimerEvent) :void
    {
        // swap out the working set
        var methods :Array = _methodQueue;
