Zugriff auf Variable oder Funktion in MC

Mayday171

Erfahrenes Mitglied
Hallo,

Ich verzweifle bald daran. Komme einfach nicht mehr drauf wie ich an eine Variable von einen MC komme.

Ich habe einen MC mit den Identifier "can" und darin eine Stringvariable "test".
Dann greife ich doch von der Hauptbühne mit
PHP:
trace(can.test);
.

Klappt einfach nicht.
Hab es auch schon mit den as export versucht.
Was mach ich denn falsh

MfG
 
Hallo,

probier mal

Code:
trace (_root.can);
trace (_root.can.test);

Im Notfall kannsst du ja auch mal die *.fla posten.

gruss

PS:
Hier findest du eine kleine Ausgabe-Hilfe für genau diese Art von Blockade ;).
 
Hab ich alles schon probiert. Sogar mit dem Exportnamen und _global usw.
Ich schicke dir mal die Datei mit und lese mir nebenbei deinen anderen Beitrag durch.

Die Variable Test befindet sich im MC mit Namen gerät2 und ich brauche diese im Root bzw. ist das zum testen gedacht weil ich letztendlich die funktionen in gerät2 in _root aufrufen will.

Danke

MfG
 

Anhänge

  • 27279attachment.zip
    30,3 KB · Aufrufe: 13
Hallo,

da sind zwei Dinge, die du beachten solltest:

1. Die Instanz heisst "can1" und nicht "can"...

2. ActionScript-Code, der sich in MovieClips befindet, die auf der Bühne liegen, werden nach den Anweisungen auf der Hauptzeitleiste ausgeführt. In deinem Fall würde ein "trace" also stattfinden, bevor die Variable "test" in deinem MovieClip "can1" gesetzt wird. Umgehen kannst du das, indem du den "trace"-Aufruf (oder sonstige Anweisungen, die sich auf Code in einem MvieClip beziehen) in eine onEnterFrame-Schlaufe packst, die du auch gleich wieder löschst:

Code:
onEnterFrame = function () {
   trace (can1.test);
   delete onEnterFrame;
}

gruss
 
Das das Ding can1 heißt wusste ich.

Und wie mach ich das jetzt mit den Funktionen?
Kann ich die überhaupt vom _root aus aufrufen

vorladen();
forward();

MfG
 
Geht aber irgendwie nicht!

Hab es auch nicht so wie du gemacht, sonder so

PHP:
can1.onEnterFrame = function () {
   trace(can1.test);
   delete can1.onEnterFrame;
}

Das mit dem Trace ging nicht ohne Can1 vor der function...

Das mit den Funktionen funktioniert garnicht.

Kann ich das auch so 2 reinmachen ?

PHP:
can1.onEnterFrame = function () {
can1.vorladen();   
can1.forward();
   delete can1.onEnterFrame;
}
 
Hallo,

du hast ja weiter unten auch noch eine zweite Definition von onEnterFrame auf der Hauptzeitleiste, also wird die erste überschrieben.

Wenn du eine onEnterFrame-Funktion definierst, beziehen sich alle Anweisungen auf die Instanz, auf der die onEnterFrame geschrieben wurde. In diesem Fall würdest du die Funktion "vorladen" im MovieClip "can1" des MovieClips "can1" aufrufen ==> geht nicht ;). Fürs Verständnis:
Lass dir mal Folgendes anzeigen:
Code:
can1.onEnterFrame = function () {
    trace (this);
    delete this.onEnterFrame;
}

Dieser Code hier stellt schon mal den richtigen Ansatz dar, allerdings musst du jetzt nach obigem Muster anpassen:
Code:
can1.onEnterFrame = function () {
   this.vorladen();   
   this.forward();
   delete this.onEnterFrame;
}
Das stellst du nun auf die Hauptzeitleiste und nun sollte das funktionieren.

gruss
 
Danke für deine Hilfe
Es hat zwar geklappt, aber auch nicht so wie ich wollte.

Pack jetzt alles in ein Frame und programmier es per Hand objektorientiert in hübsche klassen.

MfG
 

Neue Beiträge

Zurück