      */ 
     private var verticalTransition:Boolean;
     
+    /**
+     *  @private
+     *  Flag used to determine whether the transition should wait a frame when
+     *  it receives the EFFECT_END event.  This is true by default.  It is only
+     *  set to false when the endTransitions() method is called.
+     */ 
+    private static var renderLastFrame:Boolean = true;
+    
+    /**
+     *  @private
+     *  Private vector that stores all the active transitions.
+     */ 
+    private static var activeTransitions:Vector.<ViewTransitionBase> = new Vector.<ViewTransitionBase>();
+
+    /**
+     *  @private
+     *  Ends all currently active view transitions.
+     */ 
+    mx_internal static function endTransitions():void
+    {
+        // Prevent the transitions from waiting a frame when they receive the
+        // EFFECT_END event.  See effectComplete().
+        renderLastFrame = false;
+        
+        // End all active transitions.  They will be removed from the vector
+        // in transitionComplete().
+        for (var i:int = 0; i < activeTransitions.length; i++)
+            activeTransitions[i].effect.end();
+        
+        // Restore render flag
+        renderLastFrame = true;
+    }
     
     //--------------------------------------------------------------------------
     //

    {   
        if (effect)
        {
            effect.addEventListener(EffectEvent.EFFECT_END, effectComplete);
            
            // Dispatch TRANSITION_START.

        if (!consolidatedTransition)
            actionBarMoveEffect_effectUpdateHandler(null);
        
        if (renderLastFrame)
        {
            // We don't call transitionComplete just yet, we want to ensure
            // that the last frame of animation actually gets rendered on screen
            // before we clean up after ourselves.  This prevents a perceived 
            // stutter on the very last frame.
            navigator.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }
        else
        {
            enterFrameHandler(null);
        }
    }
    
    /**
