2009-05-30 29 views
5

Quiero animar MoviveClips/Sprite objetos como smootly como sea posible. Sin embargo, hasta ahora, el único método que funciona es colocar el código de movimiento en el controlador de eventos EnterFrame. Hay un problema con este enfoque: cuando el framerate en una máquina específica está por debajo del framerate deseado, entonces todo el juego se ralentiza. Quiero poder hacer esto de una manera independiente del tiempo.ActionScript 3: animación programática Smooth

Respuesta

12

Hay dos maneras de hacer la animación programática dentro del reproductor de Flash. Lo primero que ya señaló utilizando un onEnterFrame. Sin embargo, como ya habrás notado, para obtener una animación suave necesitas aumentar la velocidad de fotogramas general de tu película. Hacer esto también aumentará la carga de la CPU durante todo el período de tiempo que se ejecuta su SWF. Esto no es algo que siempre quieres.

La otra forma de hacer animación programática es mediante el uso de un temporizador. Dentro de un manejador de temporizador es posible llamar a una función llamada updateAfterEvent que actualizará la pantalla independientemente del FPS que establecería para su SWF. Por lo tanto, el uso de un temporizador deja una puerta de enlace para hacer una animación fluida dentro del reproductor Flash sin aumentar la velocidad de fotogramas general de su SWF. Hace

dos años o así que se dispuso a crear mis propias bibliotecas de interpolación para flash (debido a mis frustraciones con las bibliotecas tween entonces existentes disponibles). Lo lancé con el nombre Coretween y esta biblioteca le permite, entre otras cosas, elegir qué tipo de animación prefiere para cada interpolación individual. En la página de documentación doy un example de la diferencia entre la animación basada en el marco y la basada en el tiempo. El archivo SWF de ejemplo en esa página se ejecuta a 12 fps, pero como puede ver, el círculo inferior se suaviza mucho más porque es controlado por un temporizador que funciona a 60 fps y actualiza la pantalla en función de la velocidad de fotogramas SWF. No obstante, tenga en cuenta que incluso el temporizador funciona a 60 fps, en realidad, Flash Player nunca podrá alcanzar esta velocidad de cuadro. Sin embargo, tratará de lograr esta velocidad de cuadro que da como resultado una animación general mucho más suave.

Por desgracia, hasta ahora no hemos sido capaces de liberar una versión 1.0 de la biblioteca de mi pero por lo que sé que es bastante estable. Eres más que bienvenido para usarlo de la forma que consideres conveniente. He usado Coretween en muchas producciones comerciales, incluida esta que hicimos para el banco StGeorge aquí en Australia.

+0

¡Impresionante! Justo lo que necesito. Voy a esperar con la aceptación, para que pueda obtener más votos positivos :) – George

+0

Gracias. Las personas aún pueden votar cuando se acepta una respuesta. :) – Luke

+0

Las preguntas sin respuestas aceptadas generalmente reciben más atención. La mayoría de los usuarios no se molestan en votar una respuesta después de ser aceptada. – George

2

Estas son algunas bibliotecas de animación basadas Actionscript:

TweenMax

Tweener

Ambos funcionan bien, y debe ayudarle con lo que necesite.

+0

Por desgracia no es así, ya que necesito un control suave en tiempo real sobre mis objetos. El método tweener, que garantiza que a veces en el futuro el objeto llegará a su posición deseada, es "poco bueno". – George