onPress Event wird nicht zugewiesen

Mayday171

Erfahrenes Mitglied
Hallo,

Ich erstelle in einer For-Schleife Movie Clips und möchte gleichzeitig auf jeden erstellten MovieClip ein onPress Event legen.

Funktioniert irgendwie nicht, aber warum?

PHP:
for(i=0+(thumbLimit*page);i<thumbLimit+(thumbLimit*page);i++) {
				mcthumb.createEmptyMovieClip("thumb"+i,1+i);
				
				mcthumb["thumb"+i].loadMovie(pics.dir+"/TN/"+pics.filename[i]);
				//mcthumb["thumb"+i]._xscale=((100/pics.height[i])*64);
				//mcthumb["thumb"+i]._yscale=((100/pics.height[i])*64);
				mcthumb["thumb"+i]._x=mcthumb["thumb"+(i-1)]._x+80;
			mcthumb["thumb"+i].onPress = function() {
				trace(pics.dir+"/"+pics.filename[i])
			}
		}


Danke

MfG
 
Hi,

wenn ich jedes Mal, wenn dieses Problem auftaucht, einen Euro bekäme, wäre ich bald Millionär ... ^^

@Topic: Die Variable "i" ist in Deiner onPress-Methode nicht mehr aktuell (sie zeigt bestenfalls auf das letzte Element in der Schleife.

Du musst jeder Instanz einen eigenen Member mit seinem Index zuweisen, damit er später darauf Zugriff hat:
Code:
for(i=0+(thumbLimit*page);i<thumbLimit+(thumbLimit*page);i++) {
    mcthumb.createEmptyMovieClip("thumb"+i,1+i);
    mcthumb["thumb"+i].loadMovie(pics.dir+"/TN/"+pics.filename[i]);
    mcthumb["thumb"+i]._x=mcthumb["thumb"+(i-1)]._x+80;
    mcthumb["thumb"+i].idx = i;
    mcthumb["thumb"+i].onPress = function() {
        trace(pics.dir+"/"+pics.filename[this.idx])
    }
}

Gruß
.
 
geht leider auch nicht! Kann mich schwach erinnern das Problem auch schon mal gehabt zu haben :rolleyes:

PHP:
mcthumb["thumb1"].onPress = function() {
				trace(pics.dir+"/"+pics.filename[this.idx])
			}

selbst das macht er nicht bzw. da setzt er auch kein onPress drauf.

Danke

MfG
 
Hi,

na da war ich aber auch mal blind:
Code:
mcthumb["thumb"+i].loadMovie(pics.dir+"/TN/"+pics.filename[i]);
Mit der loadMovie-Aktion überschreibst Du alle Eigenschaften für diesen MC, auch die onPress-Aktion (dies deshalb, da das Laden eines externen Films immer länger dauert, als die Ausführungszeit zwischen zwei Codezeilen. Flash wartet nicht darauf, dass ein Film geladen wird und führt dann erst die nächste Zeile im Code aus ...).

Lösung: Erstelle in Deinen Clips einen weiteren Container, in den Du die externen Filme lädst:
Code:
for(i=0+(thumbLimit*page);i<thumbLimit+(thumbLimit*page);i++) {
    mcthumb.createEmptyMovieClip("thumb"+i,1+i);
    var temp_ct = mcthumb["thumb"+i].createEmptyMovieClip("temp_ct", 1);
    temp_.loadMovie(pics.dir+"/TN/"+pics.filename[i]);
    mcthumb["thumb"+i]._x=mcthumb["thumb"+(i-1)]._x+80;
    mcthumb["thumb"+i].idx = i;
    mcthumb["thumb"+i].onPress = function() {
        trace(pics.dir+"/"+pics.filename[this.idx])
    }
}

Gruß
.
 
Zurück