2009-05-30 41 views
5

Ich möchte MoviveClips/Sprite-Objekte so weich wie möglich animieren. Die einzige Methode, die funktioniert, ist das Platzieren des Bewegungscodes in den EnterFrame-Event-Handler. Es gibt ein Problem mit diesem Ansatz: Wenn die Framerate auf einer bestimmten Maschine unter der gewünschten Framerate liegt, verlangsamt sich das ganze Spiel. Ich möchte das zeitunabhängig machen können.ActionScript 3: Glatte programmatische Animation

Antwort

12

Es gibt zwei Möglichkeiten, programmatische Animationen im Flash Player zu erstellen. Das erste, auf das Sie bereits hingewiesen haben, ist ein onEnterFrame. Wie Sie vielleicht schon bemerkt haben, müssen Sie die Gesamtbildrate Ihres Films erhöhen, um eine flüssige Animation zu erhalten. Dadurch erhöht sich auch die CPU-Auslastung für den gesamten Zeitraum, den Ihre SWF-Datei ausführt. Das ist nicht etwas, was du immer willst.

Die andere Möglichkeit der programmatischen Animation ist die Verwendung eines Timers. Innerhalb eines Timer-Handlers ist es möglich, eine Funktion namens updateAfterEvent aufzurufen, die den Bildschirm unabhängig von dem FPS aktualisiert, den Sie für Ihre SWF festgelegt haben. Wenn Sie also einen Timer verwenden, bleibt ein Gateway für reibungslose Animationen im Flash-Player, ohne dass die Gesamtbildrate Ihrer SWF-Datei erhöht wird.

Vor zwei Jahren begann ich meine eigenen Tween-Bibliotheken für Flash zu erstellen (wegen meiner Frustration mit den damals vorhandenen Tween-Bibliotheken verfügbar). Ich veröffentlichte es unter dem Namen Coretween und diese Bibliothek lässt Sie unter anderem wählen, welche Art von Animation Sie für jedes einzelne Tween bevorzugen. Auf der Dokumentationsseite gebe ich eine example der Unterschied zwischen Frame-basierte und zeitbasierte Animation. Die Beispiel-SWF auf dieser Seite läuft mit 12 fps, aber wie Sie sehen können, sind die niedrigeren Kreis-Tweens viel glatter, da sie von einem Timer gesteuert werden, der 60 fps tickt und den Bildschirm unabhängig von der SWF-Bildrate aktualisiert. Bedenken Sie jedoch, dass der Flash Player diese Bildrate niemals erreichen kann, selbst wenn der Timer bei 60 fps tickt. Es wird jedoch versuchen, diese Bildrate zu erreichen, was zu einer viel glatteren Gesamtanimation führt.

Leider konnte ich bis jetzt keine Version 1.0 meiner Bibliothek veröffentlichen, aber soweit ich weiß, ist sie ziemlich stabil. Sie können es gerne so verwenden, wie Sie es für richtig halten. Ich habe Cortetween in vielen kommerziellen Produktionen verwendet, einschließlich dieser, die wir hier in Australien für die StGeorge Bank gemacht haben.

+0

Super! Nur was ich brauche. Ich werde mit der Annahme warten, so können Sie mehr Upvotes bekommen :) – George

+0

Danke. Leute können immer noch abstimmen, wenn eine Antwort akzeptiert wird. :) – Luke

+0

Fragen mit nicht akzeptierten Antworten bekommen normalerweise mehr Aufmerksamkeit. Die meisten Benutzer kümmern sich nicht um eine Antwort, nachdem sie akzeptiert wurde. – George

2

Hier sind ein paar Action basierte Animations-Bibliotheken:

TweenMax

Tweener

Sie beide gut funktionieren, und sollten Sie mit helfen, was Sie brauchen.

+0

Leider nicht, da ich in Echtzeit Kontrolle über meine Objekte brauche. Die Tweener-Methode, die garantiert, dass das Objekt in der Zukunft in die gewünschte Position kommt, ist "nicht gut". – George