Problem mit dynamischen MC-Buttons

deep_popel

Mitglied
Hallo,

vollgendes: ich erstelle dynamisch MCs in einem MC (Maske). Das klappt auch wunderbar, nur jetzt möchte ich die dynamischen MCs als Buttons behandeln. Hier erst mal das Script:
PHP:
var images = "001,002,003,004";
var bilder = images.split(",");
for (var i = 0; i<_root.bilder.length; i++) {
	var x_posi = 100*i;
	pic = mc.createEmptyMovieClip("pic"+(i+1), i);
	mc["pic"+(i+1)].loadMovie("Bilder/smal/"+bilder[i]+".jpg");
	mc["pic"+(i+1)]._x = x_posi;
	mc["pic"+(i+1)]._y = 0;
}
So...wenn ich mir dann die mit
PHP:
trace(pic);
die MCs ausgeben lasse, um die Namen zu kontrollieren, kommt halt _level0.mc.pic1 - pic4. Das ist ja auch ganz toll, aber wenn ich jetzt, z.B. mit
PHP:
if (mc.pic1) {
	_root.info.text = "pic1 vorhanden";
	mc.pic1.onRelease = function() {
		_root.info_btn.text = "cool";
	};
} else {
	_root.info.text = "pic1 nicht vorhanden";
}
das einzelne Bild als Button behandeln möchte, geht' das nicht. Der Text "pic1 vorhanden" erscheint. Ich geh davon aus, das es keine große Sache ist, ich konnte aber bis jetzt nichts passendes finden, nur das es eigentlich so gehen müsste. *denke ich*

Wäre sehr hilfreich, wenn mir da einer weiter helfen kann.
 
Wo lässt du dir die Namen ausgeben? Und ist der untere Code auch inerhalb der For-Schleife oder nicht?

grtz inctube
 
Der untere Code ist nicht in der For-Schleife. Muss der denn da rein? Die Namen lass ich mir mit trace(pic) in der Schleife ausgeben.
 
ok, also ich denke mal wenn du dir auserhalb der Schleife die pics ausgeben lässt findet er nur das letzte.
Was du machen kannst ist die Anweisung unten auch in die For-Schleife reinmachen und es dann nochmal versuchen, müsste dann eigentlich gehen.

grtz inctube
 
Also, wenn ich das richtig verstanden habe, habe ich das mal so gemacht:
PHP:
var images = "001,002,003,004";
var bilder = images.split(",");
for (var i = 0; i<_root.bilder.length; i++) {
	var x_posi = 100*i;
	pic = mc.createEmptyMovieClip("pic"+(i+1), i);
	mc["pic"+(i+1)].loadMovie("Bilder/smal/"+bilder[i]+".jpg");
	mc["pic"+(i+1)]._x = x_posi;
	mc["pic"+(i+1)]._y = 0;
//	trace(pic);
	if (mc["pic"+(i+1)]) {
		mc["pic"+(i+1)].onRelease = function() {
			_root.info_btn.text = "cool";
		};
		_root.info.text += "pic"+(i+1)+" vorhanden | ";
	} else {
		_root.info.text += "pic"+(i+1)+" nicht vorhanden | ";
	}
}
aber...es wird mir zwar im Textfeld gesagt, das alle Bilder (bzw. pic) vorhanden sind, aber als Button funktionieren sie immer noch nicht. Kann es vielleicht daran liegen, das sie in einem MC geladen werden, welches unter einer Maske liegt? Ich glaube das wird der Fehler sein.
 
Füg mal in deine Release-Aktion folgendes ein

PHP:
trace(this._name)
Was kommt?

Was du auch machen kannst ist folgendes:

PHP:
 mc["pic"+(i+1)].onRelease = function() {

myName=this._name
onReleaseAction(myName);
        };

function onReleaseAction (id)
{            _root.info_btn.text = "cool";
trace(id)

}



grtz inctube
 
Zuletzt bearbeitet:
Habe
PHP:
trace(this._name)
in meiner Release-Action eingefügt und es ging noch nicht einmal das Ausgabe-Fenster auf. :(
Und ich glaube dann ist auch klar, warum es mit Deinem zweiten Beispiel auch nicht geklappt hat. Irgendwas haut in meinem Script nicht hin.

Was meinst Du, wenn ich eine Maske über den MCs habe, sind die dann trotzdem anklickbar?
 
hmm... eigentlich schon. Lad doch mal deine Datei hoch, dann schau ichs mal an.

grtz inctube
 
Also:
Wenn du einen loadMovie durchführst, dann wird der Movieclip in den du lädst durch den geladenen ersetzt. Um deinen "pic"-MC anzusprechen musst in diesem noch einen MC erstellen, also so:

PHP:
mc["pic"+(i+1)].createEmptyMovieClip("lalala",20+i)

deine Aktionen führst du weiterhin auf deinem "pic"-MC durch, allerdings der loadMovie geht an den "lalala".
Wenn du jetzt noch gorße Bilder laden möchtest, entweder über XML oder mit folgendem Befehl:
PHP:
this._name.substr(3,2)
damit schneidest du die Nummer des Pics ab (Paramater siehe FlashHilfe). Wenn du nun auf ein Bild klickst kannst du mit der Nummer, das zugehörige große Bild ausm Array oder direkt ansprechen ;) Nur falls du das brauchen solltest

grtz inctube
 

Neue Beiträge

Zurück