Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-11-2011, 19:23   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2011
Beiträge: 3
EventHandling zwischen mehreren Buttons

Hallo zusammen,

im Moment habe ich ein Problem mit dem EventHandling. Auf meiner Bühne habe ich mehrere Buttons, welche von der SuperButtonKlasse abgeleitet sind.
Nun möchte ich bei MouseClick auf einen Button, diesen highlighten (was auch funktioniert) und gleichzeitig die anderen Buttons ausgrauen (was nicht funktioniert).

Für das Highlighting eines Buttons habe ich ganz normal die MouseClick Funktion in der SuperButtonklasse implementiert. Dann habe ich mir eine eigene Eventklasse ButtonEvent geschrieben. Bei MouseClick auf einen Button wird dann auch ein ButtonEvent gesendet.

In meiner Dokumentenklasse habe ich nun einen Vector in dem alle Buttons drinstehen. Jetzt laufe ich einmal über den Vector und füge einen EventListener für alle darin enthaltenen Buttons hinzu.

In der EventHandlingFunction möchte ich nun wieder über meinen Vector laufen und alle nicht angeklickten Objekte (d.h. alle Objekte !== e.currentTarget ?) ausgrauen. Das funktioniert allerdings nicht. Weiß jemand warum das so ist? Behandelt er die Objekte irgendwie anders?

Hier mal ein paar Codefragmente:

In der EventHandling Funktion MouseClick der SuperButtonklasse, von der jeder Button abgeleitet ist, steht:
Code:
//Button Event ist meine eigene EventKlasse
this.dispatchEvent(new ButtonEvent(ButtonEvent.MainButtonClicked, null));
In meiner Dokumentenklasse steht:
Code:
//Vector anlegen 
private var mainButtonVec:Vector.<SuperButtonKlasse>;
Nun der Konstruktor der Dokumentenklasse: mainButton1 und mainButton2 sind Instanzen auf der Bühne welche als Typ eine von SuperButtonKlasse abgeleitete Klasse haben
Code:
mainButtonVec = Vector.<SuperButtonKlasse>([mainButton1, mainButton2]);

for each(var mainButton:SuperButtonKlasse in mainButtonVec)
{
	mainButton.addEventListener(ButtonEvent.MainButtonClicked, mainButtonClicked);
}
EventHandling Funktion in der Dokumentenklasse:
Code:
private function mainButtonClicked(e:ButtonEvent) 
{
	/*Vektor durchlaufen, für jedes Objekt != e.currentTarget eine Funktion der
  	SuperButtonKlasse aufrufen, wo der Movie Clip auf unselected gesetzt wird*/
	for each(var mainButton:SuperButtonKlasse in mainButtonVec)
	{
		if(e.currentTarget === mainButton);
		{
			trace("MovieClip wird ausgewählt");
		}

		if(e.currentTarget !== mainButton);
		{
			trace("MovieClip auf unselected setzen");
		}
	}
}
Mein Problem ist jetzt, dass beide if-Abfragen für jedes Vectorelement wahr sind. Ich verstehe nur nicht warum. Könnt ihr mir bitte einen Tip geben?

Grüße von Bluemoon
Bluemoon81 ist offline   Mit Zitat antworten
Alt 07-11-2011, 12:46   #2 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: Braunschweig
Beiträge: 164
Hallo Bluemoon,

zwei große Probleme:

Zitat:
In der EventHandling Funktion MouseClick der SuperButtonklasse, von der jeder Button abgeleitet ist, steht:
Code:
//Button Event ist meine eigene EventKlasse
this.dispatchEvent(new ButtonEvent(ButtonEvent.MainButtonClicked, null));
Der ButtonEvent enthält keine Angabe, welcher Button den Event auslöst.
Gerade diese Information muß zum Listener transportiert werden.

Zitat:
Code:
for each(var mainButton:SuperButtonKlasse in mainButtonVec)
{
	mainButton.addEventListener(ButtonEvent.MainButtonClicked, mainButtonClicked);
}
Code:
for each(var mainButton:SuperButtonKlasse in mainButtonVec)
	{
		if(e.currentTarget === mainButton);
...
Alle (!) Buttons sind Listener auf den ButtonEvent
und in der Event-Handling-Funktion werden alle (!) Buttons getestet.
Das ist definitiv einmal "alle" zuviel.
Entweder alle Buttons sind Listener und jeder testet dann nur sich selbst
oder nur die Dokumentenklasse ist Listener und testet dann alle Buttons.

Grüße,
Matthias Kievernagel
mkiever 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eventhandling für mehrere Buttons fradi ActionScript 3 13 20-04-2008 15:57
tweening zwischen 2 und mehreren intervallen Gibbs_Helmholz Flash Einsteiger 2 05-01-2007 15:17
MC Buttons: Rollover Problem mit mehreren Buttons SlimboKarvell Flash MX 3 07-09-2005 12:32
Kommunikation zwischen mehreren PCs Dracaelius Flash 4 und Flash 5 2 08-02-2004 19:57
farbverlauf zwischen mehreren farben dmxmorales ActionScript 1 3 01-08-2002 15:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele