                 // if the user rolls over while holding the mouse button
                 if (mouseEvent.buttonDown && !mouseCaptured)
                     return;
-                
-                // if rolling back over it, turn off transitions
-                if (mouseCaptured)
-                    playTransitions = false;
+				
                 hovered = true;
-                playTransitions = true;
+				rollOutWhileFakingDownState = false;
                 break;
             }
                 
             case MouseEvent.ROLL_OUT:
             {
-                // when rolled out, turn off transitions
-                playTransitions = false;
-                hovered = false;
-                playTransitions = true;
+				if (mouseUpDeselectTimer && mouseUpDeselectTimer.running)
+				{
+					// We're trying to flash the down state for longer, 
+					// so let's not leave the hovered state just yet
+					rollOutWhileFakingDownState = true;
+				}
+				else
+				{
+					hovered = false;
+				}
                 break;
             }
                 

     *  the renderer was actually selected.
     */
    private var mouseUpDeselectTimer:Timer;
    
    /**
     *  @private
     *  Whether the component using this InteractionStateDetector should 

            return;
        }
        
		// If faking down state, let's not interrupt it because of a mouseUp somewhere 
		// else on the screen
		if (!(mouseUpDeselectTimer && mouseUpDeselectTimer.running))
			mouseCaptured = false;
        
        // If the mouseDownSelectTimer is still running, 
        // we don't want to ever go in to the down state in this case, so stop it
