• SpryFlashCMS das Flash CMS
  • TWUMBLE - bald online
  • Adobe User Group
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-07-2007, 09:33   #1 (Permalink)
Neuer User
 
Benutzerbild von maschka
 
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
maschka ist offline   Mit Zitat antworten
Alt 23-07-2007, 15:32   #2 (Permalink)
Techniker
 
Benutzerbild von hgseib
 
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
hgseib ist offline   Mit Zitat antworten
Alt 23-07-2007, 16:00   #3 (Permalink)
Neuer User
 
Benutzerbild von maschka
 
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; }
	}
	
}
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
maschka ist offline   Mit Zitat antworten
Alt 21-08-2007, 14:29   #4 (Permalink)
!=
 
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
Alt 21-08-2007, 14:44   #5 (Permalink)
Neuer User
 
Benutzerbild von maschka
 
Registriert seit: Jun 2003
Beiträge: 191
@sectore,...

ach wie blöd von mir. MouseEnabled auszuschalten... war mir scheinbar zu offensichtlich
Daran hatte ich nicht gedacht.
Elegant gelöst... Danke für's Code-teilen!

maschka
maschka ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2010 Marc Thiele und Sascha Wolter.