onRollOver-Problem bei dynamischen Movieclips

marijuanamaxe

Grünschnabel
Hi!

Das Problem besteht beim ansprechen des einzelnen Movieclips mit zB onRollOver.

Bekomm`s einfach nicht hin.
Code:
var ebene=10;
for(var i=0; i<anzahl ;i++){    
var pfad="bilder/symbole/"+userSymbol[i];
_root.container.duplicateMovieClip ("MClip"+i, ebene);
_root["MClip"+i].loadMovie(pfad);
_root["MClip"+i]._x = 55+(i*100);
_root["MClip"+i]._y = 280;
_root["MClip"+i].onRollOver=function(){};
ebene+=1;
}


Bitte um Hilfe.
 
Es ist eine Blumenwiese auf die ich mittels for schleife verschiedene externe swf`s lade.
Code:
var pfad="bilder/symbole/"+userSymbol[i];
_root.container.duplicateMovieClip ("MClip"+i, ebene);
_root["MClip"+i].loadMovie(pfad);
_root["MClip"+i]._x = 55+(i*100);
_root["MClip"+i]._y = 280;

Das funktioniert auch.

Dann will ich die einzelnen Movieclips mit zb. onRollOver ansprechen und zb einen Tooltip
anzeigen, oder mit onRelease weitere Movieclips laden.
Code:
_root["MClip"+i].onRollOver=function(){};

Funkt nicht.
 
Zuletzt bearbeitet:
Hi,

naja - dieses:
Code:
_root["MClip"+i].onRollOver=function(){};
ist ja eine leere Funktion; klar, dass da nichts passiert. Was soll denn geschehen, wenn Du mit der Maus über einen dieser Clips fährst?

Gruß
.
 
Ich habe natürlich versucht etwas in der function auszuführen.

Das ist ja nicht das Problem. Das Problem ist, daß ich keinen Zugriff auf den Movieclip (mit zb. "onRollOver") habe.
 
Zuletzt bearbeitet:
Hi,

wenn das geht:
Code:
_root["MClip"+i]._y = 280;
, sollte auch ein MouseHandler funktionieren. Poste mal die Datei, dann lässt sich der Fehler sicher schnell ausfindig machen.

Gruß
.
 
Hab im Forum http://www.flash4all.de die richtige Antwort bekommen.

Antwort von "agedoubleju":

loadMovie ist einer der asynchronen Befehle von Flash. Das bedeutet, der Befehl wird zwar abgesetzt aber erst ein paar Millionen Taktzyklen später ist dann bspw. das Bild geladen. Zwischendurch wird der Abspielkopf aber im Film weiterbewegt, bzw. es werden die nächsten Funktionen/Befehle abgearbeitet.

Das bedeutet dann in deinem Beispiel, dass es noch gar keinen MC gibt, auf den du den onRollOver-Event gelegt hast. Du solltest also zuerst mit Preloadern überprüfen, ob die Bilder auch tatsächlich nachgeladen wurden und ob die Container-MCs auch ein Höhe/Breite größer 0 haben.


Habe nun leider ein weiteres Problemchen.

Wenn ich auf meine MC`s (in einer for schleife) zugreife, funktioniert es nicht, bei jeden einzeilnen _root["MClip"+i] den userName[i] auszugeben.
Code:
for(var i=0; i<_root.anzahl ;i++)
{
_root["MClip"+i].onRollOver=function() 
{
_root.attachMovie("tooltip","tooltip",98);
delay=setInterval(showToolTip,1000,100,0xF9FBCE,"r echts",userName[i])
_root.tooltip.startDrag(true);
}
_root["MClip"+i].onRollOut=function()
{
clearInterval(delay);
removeMovieClip("tooltip");
}
_root["MClip"+i].onRelease=function()
{
_root.attachMovie("userProfil","userProfil",200);
_root.userProfil._x = 100;
_root.userProfil._y = 100;
_root.createTextField("userProfilText"+i,201,10,40 ,80,80);
_root["userProfilText"+i].text=userName[i];
}
}
 
Zuletzt bearbeitet:
Hab wiedermal eine schnelle und vor allem richtige Antwort von agedoubleju bekommen:

for(var i=0; i<_root.anzahl ;i++){
_root["MClip"+i].ID = i;//Index merken
_root["MClip"+i].onRollOver=function(){
_root.attachMovie("tooltip","tooltip",98);
delay=setInterval(showToolTip,1000,100,0xF9FBCE,"r echts",userName[this.ID]);//statt dem flüchtigen Index jetzt die gemerkte Variable einsetzen
//etc
}
 
Zurück