Autor |
Nachricht |
lars_frederikson
Threadersteller
Dabei seit: 20.04.2009
Ort: -
Alter: -
Geschlecht:
|
Verfasst Sa 16.05.2009 20:03
Titel eventListener aus Array erzeugen mit AS3 |
|
|
hi,
bin an einem projekt mit flash CS3/AS3 und habe folgendes Problem: Auf der Bühne sind 12 Movieclips, jeder benötigt drei EventListener. Wenn ich jetzt für jeden MC
name_mc.addEventListener(MouseEvent.MOUSE_OVER, funktionsname);
tippe, also 36 Zeilen, dann läuft`s anstandslos.
Wenn ich aber ein Array mit den Instanznamen der 12 MC`s packe, und mit
for (var i = 0; i < regionen.length; i++){
regionen[i].addEventListener (MouseEvent.MOUSE_OVER, color_change);
regionen[i].addEventListener (MouseEvent.MOUSE_OUT, color_change);
regionen[i].addEventListener (MouseEvent.CLICK, Fensteroffnen);
}
das ganze laufen lassen will, bekomme ich folgende Fehlermeldung:
Error #1006: value ist keine Funktion
Die Funktionsnamen passen aber, hab mir mit trace() auch die Array-Werte anzeigen lassen, die passen auch?
Wo liegt der Fehler?
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Sa 16.05.2009 21:54
Titel
|
|
|
Warum so Umständlich ???
Probier mal
Code: |
for(var i:uint = 0; i < this.numChildren; i++){
var tmp:Sprite = this.getChildAt(i) as Sprite;
tmp.addEventListener(MouseEvent.MOUSE_OVER, color_change);
tmp.addEventListener(MouseEvent.MOUSE_OUT, color_change);
tmp.addEventListener(MouseEvent.MOUSE_CLICK, Fensteroffnen);
}
|
|
|
|
|
|
Anzeige
|
|
|
lars_frederikson
Threadersteller
Dabei seit: 20.04.2009
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 18.05.2009 10:05
Titel
|
|
|
warum so umständlich? weil ich`s anders nicht gebacken krieg... im ernst, der vorschlag ist bestimmt klasse, aber leider versteh ich ihn nicht ganz, deshalb nochmal. wenn ich
basiskarte_mc.andalusien_mc.addEventListener(Mouse_Event.CLICK, color_change);
tippe, dann funktionierts, aber mit
var regionen:Array = new Array("basiskarte_mc.andalusien_mc");
for (i = 0; i < regionen.length; i++){
regionen[i].addEventListener (MouseEvent.MOUSE_OVER, color_change);
regionen[i].addEventListener (MouseEvent.MOUSE_OUT, color_change);
regionen[i].addEventListener (MouseEvent.CLICK, Fensteroffnen);
}
krieg ich die Fehlermeldung #1006?
ich denke, dass das problem in der erstellung der EventListener innerhalb einer Funktion liegt, bzw. es wird ja innerhalb der for-Schleife auf andere Funktionen verwiesen. Könnte hier das Problem liegen?
|
|
|
|
|
phihochzwei
Moderator
Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht:
|
Verfasst Mo 18.05.2009 10:18
Titel
|
|
|
Ja weil "basiskarte_mc.andalusien_mc" ein String ist, und kein MovieClip.
Code: | for(var i:uint = 0; i < basiskarte_mc.numChildren; i++){
var tmp:Sprite = basiskarte_mc.getChildAt(i) as Sprite;
tmp.addEventListener(MouseEvent.MOUSE_OVER, color_change);
tmp.addEventListener(MouseEvent.MOUSE_OUT, color_change);
tmp.addEventListener(MouseEvent.MOUSE_CLICK, Fensteroffnen);
}
|
Zuletzt bearbeitet von phihochzwei am Mo 18.05.2009 10:19, insgesamt 1-mal bearbeitet
|
|
|
|
|
lars_frederikson
Threadersteller
Dabei seit: 20.04.2009
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mo 18.05.2009 10:32
Titel
|
|
|
stimmt, bei trace(regionen[i] gibt`s mir jetzt auch "object Movieclip" und nicht mehr die Namen der Movieclips als Strings aus.
Danke erstmal, die Sache läuft!
|
|
|
|
|
|
|
|
Ähnliche Themen |
Fieses PHP/MySQL-Skript gibt nur "Array Array Array..." aus
[JavaScript] Eventlistener im IE
AS 3 EventListener deaktivieren
Brauche etwas js-Hilfe … (eventListener)
Flash CS3 - EventListener soll variable ändern
Array addieren
|
|