         }
     }
 
+    private var enterFrameCount:int = 0;
+    
     /**
      *  @private
      *  Starts the view transition.
      */
     private function startViewTransition(event:Event):void
     {
+        enterFrameCount++;
+        
+        if (enterFrameCount < 2)
+            return;
+        
+        enterFrameCount = 0;
         removeEventListener(Event.ENTER_FRAME, startViewTransition);
-        
+
+        if (hasEventListener(FlexEvent.TRANSITION_START))
+            dispatchEvent(new FlexEvent(FlexEvent.TRANSITION_START, false, false));
+
         // Force the master clock of the animation engine to update its
         // current time so that the overhead of creating the view and preparing
         // the transition is not included in our animation interpolation.
         // See SDK-27793
         Animation.pulse();
         activeTransition.play();
-        
-        if (hasEventListener(FlexEvent.TRANSITION_START))
-            dispatchEvent(new FlexEvent(FlexEvent.TRANSITION_START, false, false));
     }
     
     /**

        if (pendingViewDescriptor)
        {
            pendingView = pendingViewDescriptor.instance;
            pendingView.visible = true;
            pendingView.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, 
                            view_propertyChangeHandler);
        }

            activeTransition.startView = currentView;
            activeTransition.endView = pendingView;
            activeTransition.navigator = this;
            activeTransition.preInit();
            
            ViewTransitionUtil.notifyTransitionPreparation();
        }
        
        if (ViewTransitionUtil.suspendCount > 0)
        {
            ViewTransitionUtil.instance.addEventListener("ready", completeTransitionPreparations);
        }
        else
        {
            completeTransitionPreparations();
        }
    }
    
    private function completeTransitionPreparations(event:Event = null):void
    {
        if (event)
            event.target.removeEventListener("ready", completeTransitionPreparations);
        
        var pendingView:View;
        if (pendingViewDescriptor)
        {
            pendingView = pendingViewDescriptor.instance;
            pendingView.visible = true;
        }
        
        // Give the transition a chance to prepare before the view updates
        if (activeTransition)
            activeTransition.captureStartValues();

        // This event is dispatched here to allow developers to incorporate
        // length specific changes into the view navigator transitions
