Funktionsdeklaration innerhalb einer Schleife

daflowjoe

Mitglied
Hi!

In einer Schleife versuche ich folgende Tooltips für jeden Movieclip mit zu deklarieren:

Code:
_root[movieclip[i]].onRollOver = function(arr_names)
            {
                popup[i] = "popup_" + i;
                _root.attachMovie("tool", popup[i], 2000);
                _root["popup_"+i]._height = 82;
                _root["popup_"+i]._width = 204;
                mousex = _root["popup_"+i]._xmouse;
                mousey = _root["popup_"+i]._ymouse;
                _root["popup_"+i]._x = mousex + 120;
                _root["popup_"+i]._y = mousey - 200;
                _root["popup_"+i].createTextField("popuptext_"+i, 1000+i, 10, 10, 100, 20);
                _root["popup_"+i]["popuptext_" +i].text = i;
                return 0;
                
            }
Das Erstellen und Anzeigen des Tooltips funktioniert auch. Allerdings wird mir nicht der richtige Text im Tooltip ausgegeben, sondern immer nur 3, welcher der letzte Wert von i ist.

Wo ist das mein Denkfehler?

Gruss Joe
 
Hi,

Code:
popup[i] = "popup_" + i;
Die Variable "i" ist innerhalb des Mausereignisses nicht mehr aktuell, da die Schleife zu diesem Zeitpunkt schon längst abgearbeitet ist (in "i" steht demnach bestenfalls der Wert nach Ende der Schleife; in Deinem Fall "3").

Du musst jedem Clip seinen Index als Member zuweisen:
Code:
for (var i=0; i<4; i++) {
  _root[movieclip[i]].idx = i; // <-- Index zuweisen
  _root[movieclip[i]].onRollOver = function(arr_names)
            {
                popup[this.idx] = "popup_" +this.idx;
                _root.attachMovie("tool", popup[this.idx], 2000);
                _root["popup_" + this.idx]._height = 82;
                _root["popup_" + this.idx]._width = 204;
                mousex = _root["popup_" + this.idx]._xmouse;
                mousey = _root["popup_" + this.idx]._ymouse;
                _root["popup_" + this.idx]._x = mousex + 120;
                _root["popup_" + this.idx]._y = mousey - 200;
                _root["popup_" + this.idx].createTextField("popuptext_" + this.idx, 1000+ this.idx, 10, 10, 100, 20);
                _root["popup_" + this.idx]["popuptext_" + this.idx].text = this.idx;
                return 0;
                
            }
}

Gruß
.
 

Neue Beiträge

Zurück