Zurück   Flashforum > Aktuelles > Tutorials > Flash Tutorials

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-02-2002, 22:48   #1 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
Filme und Movieclips vorwärts/rückwärts abspielen

Immer wieder gerne genommen werden Animationen (Tweens), die je nach Interaktion vorwärts oder rückwärts ablaufen. das Grundkonzept ist hierbei, den Abspielkopf in der entsprechenden Zeitleiste immer einen Frame nach vorne oder zurück zu setzen. Da dies nicht nur einmalig, sondern ständig geschehen soll, muß die eigentliche Anweisung als Aktion auf einer über die gesamte Animation verfügbaren Filmsequenz liegen.

Folgende Aufgabenstellungen sind die häufgsten

1.) Der gesamte Film (Hauptzeitleiste) soll vorwärts oder rückwärts abgespielt werden.
Dazu verwendet man am einfachsten eine leere Filmsequenz (Controller) als Scriptträger für diese Aktion:
PHP-Code:
onClipEvent (enterFrame) {
    if (
_root.rewind) {
        
_root.prevFrame();
    } else {
        
_root.nextFrame();
    }

Über die Variable "rewind" wird festgelegt, ob der nächste oder der vorhergehende Frame abgespielt werden soll und das bei jedem Bilddurchlauf (enterFrame) des Controller-Movieclips erneut.

<ergänzung (18.10.02)>

Soll die Animation also nicht automatisch starten, legt ihr in den ersten Frame der Hauptzeitleiste noch diese Aktion
PHP-Code:
rewind=true
</ergänzung>


Auf dem Button, der den Film vorwärts laufen lassen soll:
PHP-Code:
on (release) {
    
rewind false;

Und auf dem Rückwärtsbutton
PHP-Code:
on (release) {
    
rewind true;

In diesem Script liegen beide Buttons wie auch der Controller-Movieclip bei der Animation in der Hauptzeitleiste. Die Maus-Events können natürlich beliebig angepasst oder die Variable "rewind" an einer anderen Stelle gesetzt werden

2.) Eine Animation in einer Filmsequenz soll vorwärts oder rückwärts spielen
Auch hier liegen die Buttons auf der Hauptzeitleiste. Ist dies einmal nicht der Fall, so müssen die entsprechenden Pfade beachtet werden. Das Script der Buttons ist dasselbe wie unter 1.)

Das ClipEvent-Script liegt nun direkt auf dem Movieclip, in dem sich die Animation befindet:
PHP-Code:
onClipEvent (enterFrame) {
    if (
_root.rewind) {
        
prevFrame();
    } else {
        
nextFrame();
    }

Die Vorgehensweise für beide Möglichkeiten sind gleich - im zweiten Fall sogar noch etwas kürzer und flexibler einzusetzen.

Beispieldateien für beide Wege findet ihr hier im Anhang.

Viel Spaß damit
Gruß
Rena
Angehängte Dateien
Dateityp: zip rewind.zip (9,8 KB, 4674x aufgerufen)
__________________
www.rena-hermann.de

The angels have the phone box

Geändert von rena (10-02-2002 um 22:49 Uhr)
rena ist offline   Mit Zitat antworten
Alt 24-02-2002, 18:15   #2 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
Update

Hier noch zwei Varianten:

3.) Dauerloop vorwärts/rückwärts
Ein Dauerloop vorwärts oder rückwärts. beim Rückwärtsspielen wird nach Frame 1 wieder der letzte Frame angesteuert und umgekehrt.

Das Script auf dem Controller-Movieclip (steuert den kompletten Film -> Hauptzeitleiste)
PHP-Code:
onClipEvent (enterFrame) {
    if (
_root.rewind) {
        if (
_root._currentframe == 1) {
            
_root.gotoAndStop(_root._totalframes);
        } else {
            
_root.prevFrame();
        }
    } else {
        if (
_root._currentframe == _root._totalframes) {
            
_root.gotoAndStop(1);
        } else {
            
_root.nextFrame();
        }
    }

4.) Animationssteuerung vorwärts/rückwärts je Buttonklick
Die Animation wird bei jedem Buttonklick um einen Frame vor oder zurückgesetzt. in Frame 1 wird beim Rückwärtsklicken wieder der letzte Frame angesteuert.

Zum Beispiel auf dem Rückwärts-Button, der den Abspielkopf auf der Hauptzeitleiste einen Frame zurück setzt:
PHP-Code:
on(release){
    if (
_currentframe == 1) {
        
gotoAndStop(_totalframes);
    } else {
        
prevFrame();
    }

In den Beispieldateien findet Ihr auch Varianten, die jeweils eine Filmsequenz anstelle der Hauptzeitleiste steuern.

Viel Spaß damit
Gruß
Rena
Angehängte Dateien
Dateityp: zip mehr_rewind.zip (13,0 KB, 2325x aufgerufen)
__________________
www.rena-hermann.de

The angels have the phone box

Geändert von rena (24-02-2002 um 18:28 Uhr)
rena ist offline   Mit Zitat antworten
Alt 14-02-2003, 21:47   #3 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
5.) Vorwärts und zurück - aber auch stoppen

Ab und zu wurde ich schon gefragt, wie es zu bewerkstelligen ist, einen Clip nicht nur vorwärts und rückwärts zu spielen sondern zwischendurch auch zu stoppen.

Hier braucht es nicht nur zwei Variablenwerte (true/false) sondern drei, z.b.
rewind="rueck"
rewind="vor"
rewind="halt"

Diese können dann wie gehabt abgefragt und je nach Wert der Variablen bestimmt werden, was der Film oder der Movieclip tun soll.

Ein Beispiel findet ihr in diesem Thread:
Film Rückwärts laufen lassen

Gruß
Rena

P.S.: Diese Beispiele sind Flash5-Syntax, können also auch für Veröffentlichungen für das ältere PlugIn verwendet werden. In FlashMX funktioniert das natürlich auch, wobei es dort auch andere Lösungswege gibt.
__________________
www.rena-hermann.de

The angels have the phone box
rena ist offline   Mit Zitat antworten
Alt 08-12-2003, 00:34   #4 (permalink)
alien
 
Benutzerbild von Smirgel
 
Registriert seit: May 2002
Ort: Colonia
Beiträge: 7.597
Der einfache Rückwärtslauf in FlashMX

Unter FlashMX hat man die Möglichkeit direkt auf das MC die Buttonaktionen zu schreiben. Außerdem kann man unter FlashMX den onEnterFrame-Event verwenden, den man jederzeit wieder löschen kann. D.h. das ein Script nur so lange laufen muss bis es seine Arbeit getan hat.

Auch hier haben wir den Tween für eine Buttonanimation innerhalb eines MC´s. In das erste und letzte Frame des Tweens scheiben wir jeweils ein "stop();".

Auf das MC schreiben wir folgendes Script:
ActionScript:
  1. on (rollOver) {
  2.     delete this.onEnterFrame;
  3.     play();
  4. }
  5. on (rollOut) {
  6.     this.onEnterFrame = function() {
  7.         this.prevFrame();
  8.         if (this._currentframe == 1) {
  9.             delete this.onEnterFrame;
  10.         }
  11.     };
  12. }

on(rollOver):
"delete this.onEnterFrame" löscht einen evtl laufenden onEnterFrame-Event.

"play()" spielt den Tween vorwärts ab bis er am "stop()" im letzten Frame angekommen ist.

on(rollOut):
"this.onEnterFrame=functione(){" startet einen onEnterFrame-Event. Dieser funktioniert wie der onClipEvent(enterFrame) nur das er jeder Zeit wieder gelöscht werden kann.

"prevFrame()" bewirkt das jeweils ein Frame zurückgesprungen wird (genau wie bei den Flash5-Beispielen).

"if (_currentframe == 1) {" hier wird verglichen ob der Tween wieder am Anfang angekommen ist.

"delete this.onEnterFrame;" löscht den laufenden onEnterFrame-Event. Dadurch benötigt das Script keine weitere Rechenleistung, bis wieder mit der Maus über das MC gerollt wird.


Wer das ganze nicht auf dem MC programmieren möchte, sondern auf einem Button um damit das MC zu steuern kann das folgendermaßen machen:
Dem MC mit der Tweenanimation muss ein Instantname gegeben werden (in unserem Beispiel nehmen wir "buttonmc").
Den Button selbst verwenden wir nur als aktive Schaltfläche. Darum ist es ganz hilfreich wenn man den Button nicht sehen kann. Das erreicht man, in dem man nur im aktiv-Schlüsselbild des Buttons eine Fläche erstellt. Diese Fläche ist dann der klickbare Bereich des Buttons und im erstellten Film nicht zu sehen.

Auf diesen Button legen wir das gleiche Script, nur mit angepassten Pfaden:
ActionScript:
  1. on (rollOver) {
  2.     delete buttonmc.onEnterFrame;
  3.     play();
  4. }
  5. on (rollOut) {
  6.     buttonmc.onEnterFrame = function() {
  7.         this.prevFrame();
  8.         if (this._currentframe == 1) {
  9.             delete this.onEnterFrame;
  10.         }
  11.     };
  12. }

Im Anhang die Datei für FlashMX
Angehängte Dateien
Dateityp: zip button2.zip (2,9 KB, 1560x aufgerufen)
__________________
bei fragen, fragen.
Smirgel ist offline   Mit Zitat antworten
Alt 24-11-2005, 01:59   #5 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
Probleme mit diesem Prinzip wenn die Animation hinzugeladen wird

Der Smi hat's nicht gebraucht - in den Beispielen davor werden jedoch nur absolute Pfade verwendet. Die stimmen ggf. nicht mehr, wenn der Flashfilm in eine andere Datei per loadMovie geladen wird.

Wie sich das vom Prinzip her korrigieren läßt wurde hier gefragt:
MC vorwärts/rückwärts

Zwei Möglichkeiten:
- relative Pfade statt der absoluten verwenden, also this._parent o.ä. statt _root.
- ab MX 2004 den Befehl lockRoot nutzen

Gruß
Rena
__________________
www.rena-hermann.de

The angels have the phone box
rena ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele