Einzelnen Beitrag anzeigen
Alt 21-08-2007, 15:29   #4 (permalink)
sectore
!=
 
Benutzerbild von sectore
 
Registriert seit: Jun 2001
Ort: Hamburg / Eutin
Beiträge: 249
@maschka: Mir gefällt Dein Ansatz und darüber kann man dann auch wunderbar einen "disabledState" zuordnen

Auch brauchst auch gar nicht den hitTestState auf null setzen, denn wie jedes InteractiveObject kann man auch beim SimpleButton das Empfangen der Mouse Messages einfach über mouseEnabled "abmelden".

Und bei mouseEnabled=false gibt es dann auch nur den upState, den man wiederum über den setter von enabled einen eigenen "disabledState" zuordnen kann.

Hier Dein Ansatz etwas erweitert:
PHP-Code:
package 
{
    
import flash.display.SimpleButton;
    
import flash.display.DisplayObject;
    
    public class  
CustomButton extends SimpleButton
    
{

        private var 
pDisabledAlpha:Number 0.3;
        
        
//
        // zwei zusätzliche States für die "enabled" und "disabled" Zustände
        
protected var enabledStateDisplayObject;
        protected var 
disabledStateDisplayObject;
        
//
        // Hintergrundfarben für die Zustände
        
private var upColoruint   0xFFCC00;
        private var 
overColoruint 0xCCFF00;
        private var 
downColoruint 0x00CCFF;        
        private var 
disabledColoruint 0xEEEEE;            
        
        public function 
CustomButton() 
        {
            
super();
            
            
//
            // ButtonDisplayState stammt hier aus der Flash-Doku ;)
            // http://livedocs.adobe.com/flex/201/langref/flash/display/SimpleButton.html#includeExamplesSummary
            
enabledState = new ButtonDisplayState(upColor);
            
disabledState = new ButtonDisplayState(disabledColor);
            
            
upState enabledState;                                            
            
overState = new ButtonDisplayState(overColor);
            
downState = new ButtonDisplayState(downColor);
            
hitTestState upState;            
        }
        
        

        
override public function set enabled(aEnabled:Boolean):void 
        
{
            
super.enabled aEnabled;            

            
this.mouseEnabled aEnabled;
            
            if (
aEnabled
            {
                
this.alpha 1;
                
upState enabledState;
            } 
            else 
            {
                
this.alpha pDisabledAlpha;
                
upState disabledState;
            }

        }
        
        public function 
get disabledAlpha():Number { return pDisabledAlpha; }
        public function 
set disabledAlpha(aAlpha:Number):void pDisabledAlpha aAlpha; }
    }
    

__________________
v.g.
Jens

WEBSECTOR.DE | WS-Blog
sectore ist offline   Mit Zitat antworten