onEnterFrame

harrry

Erfahrenes Mitglied
...das interessiert mich jetzt aber, mit diesem onEnterFrame: ich definiere da zum Beispiel in einem Schlüsselbild eine Farbe:
PHP:
linkfarbe1 = '<FONT COLOR="#0C9DCD">'
Die soll für diverse Ausgaben in einem Movieclip gelten, der an dieser Stelle liegt - und das funktioniert auch, wenn man das Bild zum ersten Mal ansteuert. Kommt man aber von einer ANDEREN Stelle der Leiste (wo eine andere Linkfarbe definiert ist) mit gotoAndStop ZURÜCK zu diesem ersten Bild, dann "nimmt" er die Information nicht, sondern bleibt bei der gerade vorher noch aktuellen, nun aber längst verflossenen Farbe.

Also nehm ich an, das geht irgendwie mit onEnterFrame. Nur wie?
 
Das onEnterFrame bewirkte einfach, dass die jeweilige Funktion bei jedem Frameaufruf auch aufgerufen wird.
Geht dann ungefähr so:
PHP:
this.onEnterFrame = function() {
linkfarbe1 = '<FONT COLOR="#0C9DCD">'
}
 
Hallo,

folgendes:

Wenn es bloss um Eigenschaften geht, die für einen gewissen statischen Zustand gelten, wie z.B. im Menü 1 alle Links blau, im Menü 2 rot, dann ist ein onEnterFrame meiner Meinug nach ziemlich fehl am Platz. Bei einer Framerate von 30 würde das zum Beispiel bedeuten, dass du 30 mal in der Sekunde deine Linkfarben definierst, was doch nun echt ein bisschen zuviel des Guten ist. Ich würd dir empfehlen, auf dem ActionScript-Layer bei jedem Frame, dass du anspringen möchtest, ein Keyframe anzulegen, auf dem du die Eigenschaften für den folgenden statischen Zustand angibst. Der Code wird so jedesmal neu interpretiert.

gruss
 
Hey Duke, das find ich auch, aber so hatte ich es vorher: die Farbdefinition im Keyframe, den ich angesprungen bin. Aber da hat er´s nicht übernommen - jedenfalls nicht, wenn man von einem anderen Keyframe (mit einer anderen Farbdefinition) wieder zum früheren Schlüsselbild zurück gesprungen ist. Definiert hab ichs an jeder Position wie oben (erster Eintrag) - ist da ein Fehler drin? Denn eigentlich, wie Du ja sagst, müßte es ja...
 
Mal eine Frage.
Wenn das OnEnterFrame eigentlich nur bewirkt, das der Code beim betreten des Frames ausgeführt wird, wieso lässt man es dann nicht einfach weg?
Ist es nicht dasselbe den AS einfach in den entsprechenden Frame zu packen?

Gruß,

Mike
 
Hallo,

onEnterFrame bezeichnet nicht bloss den Moment, in dem der Film zu spielen beginnt, sondern jeden Moment, in dem der Film ein neues Frame betritt, bei einer Framerate von 30 wird onEnterFrame 30mal pro Sekunde ausgelöst, daraus folgt, dass die daran gebundene Funktion 30mal in der Sekunde ausgeführt wird.

gruss
 
Zusatz: Dass Du manchmal, wenn Du per gotoAndStop einen Frame ansteuerst, nicht direkt Aktionen ausführen kannst, liegt daran, dass Flash zuerst den Code in dem jeweiligen Frame bearbeitet und danach erst die Symbole, die sich in diesem Frame befinden. Liegt in Frame 10 z.B. ein MovieClip namens "test_mc", so kannst Du auf diesen MC erst nach einem weiteren Framedurchlauf mit AS zugreifen. In diesem Fall kann eine "einmalig ausgeführte" onEnterFrame-Methode helfen:
Code:
this.onEnterFrame = function() {
    test_mc.machWas();
    delete this.onEnterFrame;
}

Gruß
.
 
Zurück