@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 enabledState: DisplayObject;
protected var disabledState: DisplayObject;
//
// Hintergrundfarben für die Zustände
private var upColor: uint = 0xFFCC00;
private var overColor: uint = 0xCCFF00;
private var downColor: uint = 0x00CCFF;
private var disabledColor: uint = 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; }
}
}