Zurück   Flashforum > Aktuelles > Tutorials > Flash Tutorials

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-04-2004, 15:15   #1 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
Geschwindigkeit von Animationen unabhängig von der Bildrate steuern

Hallo zusammen,

immer wieder stellt sich die Frage, ob man Animationen (Tweenings/Einzelbilder), einzelne Movieclip oder die Hauptzeitleiste nicht in ihrer Geschwindigkeit beeinflussen kann, ohne die eingestellte Framerate zu verändern oder das komplette Tweening umzumodeln.

Seit FlashMX kann man: der Schlüssel dazu ist der Befehl setInterval() ... der übrigens noch zu manch anderem gut ist.
Dies ist eine Methode, unabhängig vom Drehbuchablauf regelmäßig Funktionen aufzurufen und auszuführen.
Ein Beispiel ist hier beschrieben, die Datei findet ihr im Anhang.

Wir brauchen eine Animation, hier als Beispiel einen Movieclip mit einem Bewegungstween über 100 Frames darin. Dieser liegt auf der Bühne und hat den Instanznamen "mc".

Wird der Film nun getestet, läuft diese Animation mit der eingestellten Bildrate (fps).

Mit setInterval besteht nun die Möglichkeit, den nächsten Frame schneller oder auch langsamer anzusteuern. Dazu brauchen wir eine Funktion, die das mit dem Befehl nextframe() tut und den Intervalaufruf. Hier im Beispiel ist dieser Aufruf mit einer ID - einem Namen - versehen. Wofür wir den brauchen ... später.

Das gesamte Script liegt im ersten Frame:
PHP-Code:
ani=function(){
//Aufruf des nächsten Frames
    
mc.nextFrame();
//Falls beim letzten Frame angekommen, wieder zum ersten
    
if(mc._currentframe==mc._totalframes){
        
mc.gotoAndStop(1);
    }
//Folgender Befehl macht den Ablauf flüssiger - sagt man jedenfalls
    
updateAfterEvent();
}
// Die Häufigkeit des Aufrufs ist hier in eine Variable geschrieben
// Sie kann aber auch direkt in den setInterval-Befehl gesetzt werden
speed=50
// Initiieren des Intervals 
// ID=setInterval(Funktion die aufgerufen wird, Wiederholung alle x Millisek.)
aufruf=setInterval(ani,speed
Der Wert der Variable "speed" ist nun die Stellschraube für die Geschwindigkeit, probiert verschiedene Werte aus.


Verändern der Aufruf-Frequenz zur Laufzeit:

Das geht auch - wichtig ist dabei zu wissen, dass das Interval nur einmal gesetzt wird und dann Bestand hat.
Wollen wir also das Tempo verändern, so muß zuerst das Interval gelöscht werden (clearInterval(ID)) und dann neu initiiert werden.
Um ein Interval zu löschen brauchen wir dessen Namen (ID).

Im folgenden Beispiel werden zwei weitere Movieclips (Instanznamen "plus" bzw. "minus") als Buttons benutzt, die den Wert der Variable speed erhöhen bzw. verringern, das alte Interval löschen und - nun mit dem neuen Speed-Wert - neu setzen.
PHP-Code:
plus.onPress=function(){
    
speed-=10;
    
clearInterval(aufruf); //aufruf ist die oben verwendete ID des Intervals
    
aufruf=setInterval(ani,speed);
}
minus.onPress=function(){
    
speed+=10;
    
clearInterval(aufruf);
    
aufruf=setInterval(ani,speed);

Das wäre es im Prinzip, Beispiel wie gesagt anbei.

Wichtig:
Wie hoch die Geschwindigkeit geschraubt werden kann, hängt natürlich von der Animation selbst und vom Rechner ab. Der Versuch eine Vollbild-Ani mit Transparenzen auf einem 500er-Pentium mit 8MB-Grafikkarte auf virtuelle 120 Aufrufe pro Sekunde zu drehen, dürfte wohl vergeblich bleiben.

Gruß
Rena
Angehängte Dateien
Dateityp: zip schneller_langsamer.zip (3,3 KB, 1055x aufgerufen)
__________________
www.rena-hermann.de

The angels have the phone box

Geändert von rena (16-06-2004 um 20:36 Uhr)
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


LinkBacks (?)
LinkBack zu diesem Thema: http://www.flashforum.de/forum/flash-tutorials/geschwindigkeit-von-zeitleistenanimationen-unabhaengig-von-der-bildrate-steuern-122875.html
Erstellt von Für Art Datum Hits
Geschwindigkeit in Flash steuern? | Design made in Germany Dieses Thema Refback 24-09-2009 08:08 16
TP: Geschwindigkeit der Filmsequenz - TP Hilfe Forum -- Anleitung - Tutorial - Workshop... Dieses Thema Refback 29-08-2009 12:14 2


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele