    package flare.animate
    {
        import flash.events.Event;

        /**
         * Event fired when a <code>Transition</code>
         * starts, steps, ends, or is canceled.
         */
        public class TransitionEvent extends Event
        {
            /** A transition start event. */
            public static const START:String = "start";
            /** A transition step event. */
            public static const STEP:String = "step";
            /** A transition end event. */
            public static const END:String = "end";
            /** A transition cancel event. */
            public static const CANCEL:String = "cancel";

            private var _t:Transition;

            /** The transition this event corresponds to. */
            public function get transition():Transition { return _t; }

            /**
             * Creates a new TransitionEvent.
             * @param type the event type (START, STEP, or END)
             * @param t the transition this event corresponds to
             */
            public function TransitionEvent(type:String, t:Transition)
            {
                super(type);
                _t = t;
            }

            /** @inheritDoc */
            public override function clone():Event
            {
                return new TransitionEvent(type, _t);
            }

        } // end of class TransitionEvent
    }