| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) | |
| Neuer User Registriert seit: Jun 2007
Beiträge: 5
| Eventbubbling bei Buttonliste
Hallo liebes Forum, ich habe eine Liste aus Buttons (EqButton-Instanzen), die beim Auftreten eines Click-Events dieses bis zur Main hinaufbubblen lassen. Daraufhin soll die Main, abhängig davon, welcher Button das Event geschickt hat, eine Instanz einer Klasse Bike erzeugen, mit unterschiedlichen Eigenschaften. Dabei wäre es schön, wenn Main die EqButton-Instanzen dazu nicht kennen muss. Zur Veranschaulichung habe ich eine Grafik erstellt: ![]() Codemäßig sieht es momentan so aus: Code: package as3.EquipList {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.Bitmap;
public class EqButton extends MovieClip {
// Wird beim Click-Event zur Main geschickt
public static var eventString:String;
private var color:String;
private var gears:int;
private var tireSize:Number;
private var brand:String;
private var image:Bitmap;
public function EqButton(image:Bitmap, brand:String, color:String, gears:int, tireSize:Number) {
this.image = image;
this.brand = brand;
this.color= color;
this.gears= gears;
this.tireSize = tireSize;
// Eigenschaften in String verpacken, um es in Main wieder aufzuteilen
eventString = brand+","+color+","+gears+","+tireSize;
addEventListener(MouseEvent.CLICK, launchEvent);
}
private function launchEvent(e:MouseEvent):void{
var newEvent:Event = new Event(eventString, true, true);
dispatchEvent(newEvent);
}
}
} Code: addEventListener(EqButton.eventString, onEvent);
function onEvent(e:Event):void{
// Hier Instanzen von Bike erzeugen
trace("EVENT: "+e);
} Da bekomme ich jedoch folgenden Fehler: Zitat:
Könnt ihr mir bitte sagen, wie man es hinbekommt, dass die individuellen Daten aus eventString ohne Instanz übermittelt werden können? Oder muss ich von der Main aus doch die Instanzen ansprechen und einzelnd auf Click-Events abfragen? Danke schonmal für eure Hilfe. Wenn euch noch Angaben fehlen, so sagt bescheid und ich reiche sie natürlich nach. Grüße, Sven | |
| | |
| | #2 (permalink) |
| keep cool... Registriert seit: Mar 2006 Ort: Erlangen
Beiträge: 356
|
Hy, bin mir alles andere als sicher, aber müßtest du nicht so schreiben: Code: addEventListener(EqButton.eventString, onEvent);
function onEvent(e:EqButton):void
{
// Hier Instanzen von Bike erzeugen
trace("EVENT: "+e);
} Geändert von cytrics (07-09-2011 um 11:21 Uhr) |
| | |
| | #4 (permalink) |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
|
Ein Button ist nunmal kein Event-Objekt. die Struktur ist schlecht, das mit dem String zusammensetzen und wieder zerlegen. bau dir ne eigene DatenKlasse für die FarradKonfiguration bau dir eine eigene Event-Klasse, die erwartet, dass man Ihr Daten mitgibt. und lass alle Elemente so dumm wie möglich. der Button muss die genaue Konfiguration nicht kennen, keine Farbe, Rad-Grösse, oder sonstwas. wenn du jetzt noch was an der Konfiguration erweiterst, musst du das nur in der DatenKlasse tun, und an den Stellen, die auch wirklich auf die neuen Daten zugreifen müssen, alle anderen Objekte die mit den FahrradDaten in Berührung kommen merken von der Änderung nichts. DatenKlasse PHP-Code: PHP-Code: PHP-Code: Edith: hatte den problematischen Teil vergessen einzubinden PHP-Code: die privaten Eigenschaften in BikeConfiguration public gemacht. brauchst du das Bild in der DatenKlasse, oder war das nur für den Button? dann solltest du es wieder da rein tun. und du kannst die Daten ggf weiter verschachteln, bspw eine weitere Klasse für die Räder, und deren Spezifikation, oder für die Schaltung, sofern benötigt. du musst jetzt nicht alle Informationen in eine Klasse quetschen Geändert von thomas_E (07-09-2011 um 12:10 Uhr) |
| | |
| | #6 (permalink) | |
| Keine Panik Registriert seit: Apr 2010 Ort: Düsseldorf (im ernst)
Beiträge: 1.868
| Zitat:
ich würde aber trotzdem nur ein BitmapData übergeben, und den Button entscheiden lassen, wie er den verwendet, oder du nutzt eine factory-Klasse, die die Buttons erstellt und zusammenbaut, und dann geht es auch den Button nichts mehr an, was oder ob er er ein Bild erhält/enthält. edit eine änderung noch: PHP-Code: Geändert von thomas_E (07-09-2011 um 12:54 Uhr) | |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| as3, event bubbling, events |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| EventBubbling | André Michelle | ActionScript 3 | 21 | 04-03-2007 09:28 |
| scrollbare buttonliste wie machen ??? | taroma | Flash MX 2004 | 4 | 18-09-2006 09:22 |
| Dynamische vertikale Buttonliste mit versch. Attributen | Smookey1984 | Flash und Datenbanken | 2 | 18-03-2004 14:58 |