     
     /**
      *  @private
+     *  Override so we know when visibility is set. The initialized
+     *  property calls setVisible() with noEvent == true
+     *  so we wouldn't get a visibility event if we just listened
+     *  for events.
+     */
+    override public function setVisible(value:Boolean,
+                               noEvent:Boolean = false):void
+    {
+        super.setVisible(value, noEvent);
+        
+        effectiveVisibilityChanged = true;
+        invalidateProperties();
+    }
+    
+    /**
+     *  @private
      */
     override public function styleChanged(styleProp:String):void
     {

    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);

        // If the size or color changed, then create a new spinner.
        if (oldUnscaledWidth != unscaledWidth ||
            oldUnscaledHeight != unscaledHeight)
        {
            var newDiameter:Number;
            
            newDiameter = calculateSpinnerDiameter(unscaledWidth, unscaledHeight);
            updateSpinnerChildren(newDiameter);

            oldUnscaledWidth = unscaledWidth;
            oldUnscaledHeight = unscaledHeight;

        
        if (allStyles || styleName == "symbolColor")
        {
            updateSpinner(spinnerDiameter);
        }
    }

