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
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.
Hier sind ein paar Action basierte Animations-Bibliotheken:
Sie beide gut funktionieren, und sollten Sie mit helfen, was Sie brauchen.
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
- 1. Actionscript 3 springen Animation Ausgabe
- 2. jQuery slideToggle(); Bootstrap 3 nicht glatte Animation
- 3. Flash Actionscript 3 & Oszillierende Objekt Alpha Animation,
- 4. Nicht-Tween-Animation in as3 (Actionscript 3)
- 5. Silverlight Breite glatte Animation
- 6. Glatte KineticJS-Animation, kontrollierte Geschwindigkeit
- 7. glatte Animation in iOS Coreanimation
- 8. Rendering in ActionScript 3 optimieren
- 9. Glatte Animation mit SceneKit unter OS X
- 10. Glatte Klick-Event-Animation auf Leinwand
- 11. Glatte Animation mit drawRect: und UIPanGestureRecognizer
- 12. ActionScript 3 Arbeitsbereichsgröße ändern
- 13. Actionscript 3 addChild Problem
- 14. Actionscript 3 Json?
- 15. ActionScript 3 dynamisch Ruftasten
- 16. Tastatureingabe mit ActionScript 3
- 17. Infinity in ActionScript 3
- 18. arsort mit Actionscript 3
- 19. Actionscript 3; Fehler 1086
- 20. ActionScript 3 MovieClip-Klassenverknüpfung
- 21. Actionscript 3 REPL
- 22. Entsprechung in ActionScript 3
- 23. Admob & ActionScript 3
- 24. Actionscript 3 Introspektion - Funktionsnamen
- 25. Actionscript 3 und JSON
- 26. Flash Whiteboard: Actionscript 3
- 27. Eclipse und Actionscript 3
- 28. ActionScript 3 Etiketten Fett
- 29. actionscript 3 init()
- 30. Dreieck Trigonometrie (ActionScript 3)
Super! Nur was ich brauche. Ich werde mit der Annahme warten, so können Sie mehr Upvotes bekommen :) – George
Danke. Leute können immer noch abstimmen, wenn eine Antwort akzeptiert wird. :) – Luke
Fragen mit nicht akzeptierten Antworten bekommen normalerweise mehr Aufmerksamkeit. Die meisten Benutzer kümmern sich nicht um eine Antwort, nachdem sie akzeptiert wurde. – George