Funktion aus einem anderen Movieclip aufrufen

Blandorin

Mitglied
Hallo,
ich hänge seit einigen Tagen an folgendem Problem:

Ich habe innerhalb eines Movieclips eine Funktion, welche ich per AS aus einem anderen Movieclip bzw. der Hauptleiste aufrufen möchte. Obwohl die Funktion im Movieclip selber gut funktioniert (wenn der Aufruf auch aus dem Movieclip getätigt wird) schaffe ich es nicht, diese Funktion von einem anderen Movieclip aufrufen zu lassen. Ich habe die Hilfe gelesen und auch hier im Forum gesucht, habe aber keinen Lösungsansatz gefunden.

Code:
function test(anzahl)
{
     for(i=1;i<anzahl;i++)
     {
...
     }
}

So ist die Funktion aufgebaut. Was muss ich machen, dass ich diese Funktion auch aufrufen kann?
Vielen Danke :)
 
Hi,

gib dem MovieClip einen Instanznamen (wenn Du es noch nicht getan hast).

Nun musst Du schauen, wo sich der Clip mit der Funktion relativ zum aufrufenden MC befindet. Schau in die Flashreferenz nach "_parent" bzw. "_root". Beipiele:
PHP:
meinclip.test(15);
_root.meinclip.test(21);
_parent._parent.einclip.meinclip.test(4);
bla.blubb.foo.meinclip.test(7);

Gruß
.
 
Das habe ich wohl vergessen zu erwähnen :-( Ein Instanzname ist natürlich schon gegeben, und auch der Pfad zum entsprechenden Movieclip ist richtig.Trotzdem funktioniert es nicht so, wie oben beschrieben.

Stattdessen habe gerade folgendes durch Zufall ausprobiert:

PHP:
test(anzahl);
function test(anzahl)
{
     for(i=1;i<anzahl;i++)
     {
...
     }
}


Durch die Erweiterung :test(anzahl) habe ich erreicht, dass ich die Funktion aufrufen kann. Warum das so ist weiss ich nicht, in der Hilfe habe ich immer noch nichts dazu gefunden :(
Leider klappt es aber auch so immer noch nicht, da ich auf diese weise keinen Parameter übergeben kann. Die Funktion wird zwar ausgeführt, der übergebene Parameter wird aber einfach ignoriert.
Woran liegt das und wie kann ich das beheben?
Danke sehr :)
 
Ok, ich habe es im Anhang eingefügt. Ist jetzt natürlich nicht das Projekt, bei dem der Fehler auftrat, sondern nur eine "Test-Datei", bei der aber genau das gleiche Problem auftritt.
 

Anhänge

warum so kompliziert..
setz es doch einfach in's erste Schlüsselbild deiner Hauptzeitleiste, dann kannst du es aufrufen von wo auch immer..
PHP:
 Object.prototype.test = function(anzahl) {
 	   for (i=1; i<anzahl; i++) {
 			this.schrift.text = i;
 		}
 };
 //Aufruf
 _root.test_mc.test(10);
 
Na ja, wenn ein MovieClip eine bestimmte Memberfunktion haben soll, brauchts nicht immer einen Prototype (der würde ja nicht unbedingt bei allen MCs Sinn machen).

Der Grund, warum der Aufruf nicht klappt, ist der dass Flash AS in Schlüsselbildern vor dem Zeichnen des Bildes ausführt. Du musst also mindestens einen Frameaufruf warten, bis Du die Funktion eines Clips auf der Bühne ansprechen kannst:
PHP:
this.onEnterFrame = function() {
	test_mc.test(10);
	delete this.onEnterFrame;
}

Gruß
.
 
Zurück