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: Alles auswählen
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);
}
}
}
Hier wird das Event in Main aufgefangen:
- Code: Alles auswählen
addEventListener(EqButton.eventString, onEvent);
function onEvent(e:Event):void{
// Hier Instanzen von Bike erzeugen
trace("EVENT: "+e);
}
Da bekomme ich jedoch folgenden Fehler:
ArgumentError: Error #1063: Argument count mismatch on as3.EquipList::EqButton(). Expected 5, got 0.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at as3.EquipList::List()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at as3.EquipList::EquipList()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at simulator_fla::MainTimeline()
Also scheinbar kann er die statische Variable eventString nicht ansprechen, da er die Instanz nicht kennt...
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 nach.
Grüße,
Sven