| | #1 (Permalink) |
| Neuer User Registriert seit: Jun 2003
Beiträge: 191
| disabledState für SimpleButton?
Hallo, ich benutze oftmals die SimpleButton Klasse und hab mich letztlich gefragt, warum, wenn man die Eigenschaft "enabled" auf false setzt, es kein entsprechendes grafisches Feedback gibt. Oder hab ich da was übersehen? Es gibt ja nur die Eigenschaften: upState, overState, downState, hitTestState sowas wie ein disabledState konnte ich nirgends finden. Hat da jemand ne Idee? danke |
| | |
| | #2 (Permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 14.659
|
habe es selbst noch nicht programmiert. denke aber, man muss enabled überschreiben.
__________________ die ultimative antwort auf alle programmierfragen: der debugger! - vor eine programmzeile klicken (==roter punkt) - im menü "debuggen" aufrufen - auf den grünen pfeil klicken - im swf etwas machen (der programmablauf hält beim roten punkt) - links die objekte auswählen, variable, interne... mal alles ansehen! mit dem debugger kann man sein programm schrittweisse abarbeiten und in alle variable reinsehen. mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (Permalink) |
| Neuer User Registriert seit: Jun 2003
Beiträge: 191
|
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; }
}
}
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 |
| | |
| | #4 (Permalink) |
| != 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: |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |