zuweißen von OnPress Eventen auf verschiedene MCs

Mayday171

Erfahrenes Mitglied
Hallo,

Ich habe eine Bildergallerie in AS gebaut und bin nun dabei ein onPress Event auf die jeweiligen Thumbnails einzufügen. Auf klick sollen dann die Bilder in einen anderen MC in orginalgröße angezeigt werden.

PHP:
for(e=seite;e<(seite+15);e++) {
				removeMovieClip(this["bild"+(e+15)]);
				removeMovieClip(this["bild"+(e-15)]);
				var but = this.createEmptyMovieClip("bild"+e,50+e);
				but.onPress = function() {
					_root.debug.text=this["bild"+e].name;
				}
				if(multx==3) {
					but._x=0;
					multy+=1;
					multx=0;
				}
				but._x=multx*140
				but._y=multy*100
				but.loadMovie("pictures/"+_root.haupt[i]+"/"+_root.dat[i][e]);
				but._xscale=20;
				but._yscale=20;
				multx++;
			}

Hier ist die for-Schleife im MC, die die Thumbnails der Bilder generiert. Mein Problem ist nun das OnPress Event. Wenn ich das Flash kompilliere und online stelle, ist es so als wär die onPress garnicht da, d.h. der Mauszeiger ändert sich nicht zum Finger, wie es sonst wäre.

Was hab ich da falsch gemacht?

Danke

MfG
 
Hi,

mehrere Fehler:
Code:
but.onPress = function() {
  _root.debug.text=this["bild"+e].name;
}
Die Variable "e" ist an der Stelle, wo die onPress-Methode ausgeführt wird, schon längst unbekannt. Das macht aber nichts, da Du Dich innerhalb von onPress schon auf dem jeweiligen Button befindets; "this" verweist also auf den Button selber:
Code:
but.onPress = function() {
    _root.debug.text = this.name;
}
(vorausgesetzt, "name" ist eine Eigenschaft, die Du dem Button zugewiesen hast - den Instanznamen eines MCs bekommst Du mit "_name")


  • Da Du nach der Definition des onPress-Handlers eine loadMovie-Aktion auf diesem Clip ausführst, wird der komplette Clip (und damit auch der onPress-Handler) überschrieben (loadMovie überschreibt den Zielclip immer). Das ist der Grund, warum Du z.B. keinen HandCursor siehst. Erstelle für den einzuladenden Inhalt einen weiteren Container:
Code:
var but = this.createEmptyMovieClip("bild"+e,50+e);
var ct = but.createEmptyMovieClip("ct", 1);
but.onPress = function() {
    trace(this._name);
}
ct.loadMovie("pictures/"+_root.haupt[i]+"/"+_root.dat[i][e]);

Zusätzliche Frage: Was bezweckst Du mit diesen beiden Zeilen:
Code:
removeMovieClip(this["bild"+(e+15)]);
removeMovieClip(this["bild"+(e-15)]);

Gruß
.
 
Die zwei removeMovieClip sind für die vorherigen Thumbnails. Diese werden je nach dem ob man auf vor oder zurück klickt gelöscht. Das funktioniert ja schon alles so wie ich das will.

Was ich brauch ist nicht den Instanznamen sondern den Pfad zum Bild.
Wenn also i und e nicht mehr verfügbar ist dann sollte ich wohl _parrent oder eine extra variable für den Pfad benutzen den ich dann wieder bei der onPress aufrufe.

PHP:
for(e=seite;e<(seite+15);e++) {
				removeMovieClip(this["bild"+(e+15)]);
				removeMovieClip(this["bild"+(e-15)]);
				var but = this.createEmptyMovieClip("bild"+e,50+e);
				var ct = but.createEmptyMovieClip("ct", 1);
				var pfad="pictures/"+_root.haupt[i]+"/"+_root.dat[i][e]
				but.onPress = function() {
					_root.debug.text=_root.auswahl.pfad;
				}
				if(multx==3) {
					but._x=0;
					multy+=1;
					multx=0;
				}
				but._x=multx*140
				but._y=multy*100
				ct.loadMovie("pictures/"+_root.haupt[i]+"/"+_root.dat[i][e]);
				but._xscale=20;
				but._yscale=20;
				multx++;
			}

Danke erstmal!

MfG
 
Zuletzt bearbeitet:
Hi,

den Pfad zum jeweiligen MC bekommst Du, wie gesagt, per "this".

Wenn es Dir um den Pfad zur Bilddatei geht:
Code:
var but = this.createEmptyMovieClip("bild"+e,50+e);
but.imgpath = "pictures/"+_root.haupt[i]+"/"+_root.dat[i][e];
var ct = but.createEmptyMovieClip("ct", 1);
but.onPress = function() {
    trace(this.imgpath);
}
ct.loadMovie(imgpath);
Es steht Dir natürlich frei, statt dem eigentlichen Pfad auch die Variablen "i" und "e" mit ihrem jeweiligen Wert in den einzelnen Clips abzulegen:
Code:
but.i = i;
but.e = e;

Gruß
.
 

Neue Beiträge

Zurück