Das mit dem überschreiben hab ich mir auch gedacht und es gleich mal versucht:
Code:
/**
* Custom Button
* erweitert den Simple Button
* und deaktiviert den Button tatsächlich, wenn er enabled==false ist (SimpleButton deaktiviert
* lediglich die Hoover-Effekte, sendet aber dennoch "Clicked-Events" etc)
* außerdem wird der Button halbtransparent gemacht, wenn er ausgeschaltet ist
*/
package engineAs3{
import flash.display.SimpleButton;
import flash.display.DisplayObject;
public class CustomButton extends SimpleButton{
/** auf welchen Alpha soll der Button gesetzt werden, wenn er deaktiviert wird? */
private var pDisabledAlpha:Number = 0.3;
public function CustomButton(upState:DisplayObject = null, overState:DisplayObject = null, downState:DisplayObject = null, hitTestState:DisplayObject = null) {
super(upState, overState, downState, hitTestState);
}
// Überschreiben der ursprünglichen Enabled Eigenschaft
/**
* Setzt, wenn vorhanden einen anderen Display-State des Buttons (disabledState)
* und deaktiviert die Erzeugung von Events (z.b: MouseEvent.CLICK)
* @param aEnabled
* @return
*/
override public function set enabled(aEnabled:Boolean):void {
if (aEnabled) {
this.alpha = 1;
this.hitTestState = this.upState;
} else {
this.alpha = pDisabledAlpha;
this.hitTestState = null;
}
super.enabled = aEnabled;
}
public function get disabledAlpha():Number { return pDisabledAlpha; }
public function set disabledAlpha(aAlpha:Number):void { pDisabledAlpha = aAlpha; }
}
} funktioniert an sich schon wunderbar.
Mit dieser Variante kann ich aber der "enabled=false" kein grafisches Pendant geben, sondern es lediglich halbtransparent machen... Aber immerhin. =)
Aber wenn da noch jemand ne bessere Idee hat,.. dann immer her damit
gruß
maschka