package flare.animate
{
    /**
     * Interface for "schedulable" objects that can be run by
     * the Scheduler class.
     */
    public interface ISchedulable
    {
        /**
         * Evaluate a scheduled call.
         * @param time the current time in milliseconds
         * @return true if this item should be removed from the scheduler,
         * false if it should continue to be run.
         */
        function evaluate(time:Number) : Boolean;
        
        /** A unique name identifying this schedulable object. The default
         *  is <code>null<code>. If non-null, any other scheduled items with
         *  the same id will be canceled upon scheduling.
         *  
         *  <p>Once an item has been scheduled, it's id should not be changed.
         *  However, it is left to subclasses to respect this convention.
         *  If it is not followed, erratic cancels may occur.</p> */
        function get id():String;
        function set id(n:String):void;
        
        /** Invoked if a scheduled item is cancelled by the scheduler. */
        function cancelled():void;
        
    } // end of interface ISchedulable
}