Ereignisprozedur für Schaltfächen / MC's im ersten Bild

latitude

Mitglied
Hallo,

ich habe folgendes kleines Prob.

Bei meinen Spielerreien mit Flash komme ich nicht weiter. Ich möchte das gesamte AS in das erste Bild des Films auf _level0 ablegen, damit dies leichter pflegbar ist. Ebenfalls im ersten Bild befindet sich der Preloader, der nach erfolgtem Preload das zweite Schlüsselbild anspringt. Soweit so gut.

das Problem:
Auch Schaltfächenereignisse sind im ersten Bild z.B. mittels:
Code:
_root.mcMeinCilp.mcZweiterClip.onRollOver = function(){
trace("nur ein test");
this.gotoAndStop("Irgendetwas");
}

aufgeführt. Leider funktionieren diese nicht. Das Problem tritt auch dann auf, wenn bei einer Verschachtelung der Zielclip z.B. im 100 Bild der Zeitleiste steht. Bleibt alles im ersten Bild funktioniert es tadellos.

Habe ich hier irgendeinen Denkfehler begangen?

Danke für Eure Hilfe!
 
Hi,

handelt es sich bei "mcZweiterClip" nun um eine Schaltfläche oder einen MovieClip?

Poste bitte mal Deine Datei, denn aufgrund Beschreibung kann ich mir kein klares Bild von der Situation machen. Vielleicht versuchst Du ein Objekt anzusprechen, dass zum Zeitpunkt des RollOvers nicht existiert (weil es z.B. auf einem anderen Frame sitzt).

Gruß
.
 
Hallo Tobias,

vielen Dank für deine schnelle Antwort. Ich habe mal eine sehr kurze test.fla angehangen. Der Aufbau ist anlaog der eigentlichen. Auf _level0 im ersten Bild steht das AS. Der Film stoppt auf der zeitleiste von _level0 in Bild 15. Auf der Bühne sind dann zwei ineinander verschachtelte MC's.

test2 ist sozusagen der Container und beinhaltet mcTest auf Bild 5 der Zeitleiste von test2, auf den das Ereignis mittels absolutem Pfad gechrieben wurde.

Ich schwierig zu beschreiben, vielleicht kannst Du es Dir einmal anschauen.

Thanks.
 

Anhänge

Hi,

ist klar: Du versuchst mit _root.mcTest.onRollOver auf Frame 0 ein Ereignis auf einen MovieClip zu legen, der erst in Frame 15 existiert.

Zum anderen befindet dich der MC "mcTest" im MC "test2" und müsste daher über _root.test2.mcTest angesprochen werden.

Wenn Du auf Objekte zugreifen willst (eine Mausereignis-Definition gehört auch dazu), musst Du das schon in einem Frame erledigen, in dem das betreffende Objekt auch existiert.

Gruß
.
 
Hm verstehe, aber bedeutet das nicht, dass der eigentliche Sinn etwas verloren geht? Wie gesagt, der Pflege wegen möchte ich sämtliches AS in das erste Bild der root legen. dazu zählen dann natürlich auch sämtliche Schaltfächen. Wenn ich Deine Antwort richtig gelesen habe, funktioniert dies nicht, da zum Zeitpunkt des 1.Bildes das Objekt nicht existiert. Eigentlich wollte ich somit verhindern, dass AS auf den Schaltflächen direkt platziert wird. Das Schaltflächen in verschiedenen Bilder der Hauptzeitleiste oder in verschachtelten MC's liegen ist sicherlich jedem klar.

Welchen alternativen Lösungsansatz gibt es?

Danke Dir.
 
Hi,

Ich würde generell auf eine Hauptzeitleiste verzichten und alles in den ersten Frame setzen. ;)

Wenn Du einen Preloader verwendest, der nach getaner Arbeit ein paar Frames weiterspringt, setze halt deinen kompletten Code in diesen angesprungenen Frame (in dem die Objekte existieren). Es macht schon Sinn, dass Du nur aktuelle Objekte ansprechen kannst, denn auf einer Zeitleiste können sich ja in mehreren Schlüsselbildern Instanzen mit gleichem Namen befinden, die auch getrennt angesprochen werden können. Es ist der Sinn und Zweck einer Zeitleiste, dass man zwischen kompletten Objektsetups wechseln kann und ein "Hin-und-her"-Scripten würde noch mehr Verwirrung stiften.

Du könntest auch in Frame 15 einen Container-MC anlegen, in dem sich alle weiteren MCs befinden und in dessen erstem (und einzigem) Frame den Code ablegen. Im Preloader-Frame würde ich nur Preloader-Kram hineinpacken.

Gruß
.
 
O.K. das macht durchaus Sinn. Ich denke ich werde mir wohl eine striktere Art der Coderei angewönnen müssen. War halt mein Denkfehler, da ich davon ausgegangen bin, dass sämtliches AS im ersten Bild zur Verfügung steht und auch bei Objekten funktioniert, die noch initialisiert werden.....

Vielen Dank für Deine schnelle und kompetente Hilfe Tobias :)

Gruß

latitude
 
Zurück