Creé un Tween Engine genérico en java que puedes usar para animar cualquier cosa, incluidos tus sprites. Está optimizado para Android y juegos porque no asigna nada en tiempo de ejecución, para evitar cualquier recolección de basura. Además, los Tweens se agrupan, así que realmente: ¡no hay recolección de basura para nada!
Puede ver una demostración completa here como una aplicación de Android, o here como una página WebGL html (requiere Chrome)!
Todo lo que tiene que hacer es implementar la interfaz TweenAccessor
para agregar soporte Tween a todos sus sprites. Ni siquiera tiene que cambiar su clase Sprite, simplemente cree una clase SpriteTweenAccessor
que implemente TweenAccessor<Sprite>
, y regístrela al motor en la inicialización. Sólo echar un vistazo a la GetStarted wiki page;)
http://code.google.com/p/java-universal-tween-engine/

También estoy construyendo un editor de línea de tiempo visual que puede ser embebido en cualquier aplicación. Incluirá una línea de tiempo similar a la herramienta de edición de Flash y Expression Blend (una herramienta de desarrollo de Silverlight).
Todo el motor está muy documentado (todos los métodos y clases públicas tienen javadoc detallado), y la sintaxis es bastante similar al motor TweenMax/TweenLite de Greensock que se utiliza en el mundo Flash. Tenga en cuenta que es compatible con todas las ecuaciones de relajación de Robert Penner.
// Arguments are (1) the target, (2) the type of interpolation,
// and (3) the duration in seconds. Additional methods specify
// the target values, and the easing function.
Tween.to(mySprite, Type.POSITION_XY, 1.0f).target(50, 50).ease(Elastic.INOUT);
// Possibilities are:
Tween.to(...); // interpolates from the current values to the targets
Tween.from(...); // interpolates from the given values to the current ones
Tween.set(...); // apply the target values without animation (useful with a delay)
Tween.call(...); // calls a method (useful with a delay)
// Current options are:
yourTween.delay(0.5f);
yourTween.repeat(2, 0.5f);
yourTween.repeatYoyo(2, 0.5f);
yourTween.pause();
yourTween.resume();
yourTween.setCallback(callback);
yourTween.setCallbackTriggers(flags);
yourTween.setUserData(obj);
// You can of course chain everything:
Tween.to(...).delay(1.0f).repeat(2, 0.5f).start();
// Moreover, slow-motion, fast-motion and reverse play is easy,
// you just need to change the speed of the update:
yourTween.update(delta * speed);
Por supuesto, ningún motor de Tween estaría completo sin proporcionar una manera de construir secuencias de gran alcance :)
Timeline.createSequence()
// First, set all objects to their initial positions
.push(Tween.set(...))
.push(Tween.set(...))
.push(Tween.set(...))
// Wait 1s
.pushPause(1.0f)
// Move the objects around, one after the other
.push(Tween.to(...))
.push(Tween.to(...))
.push(Tween.to(...))
// Then, move the objects around at the same time
.beginParallel()
.push(Tween.to(...))
.push(Tween.to(...))
.push(Tween.to(...))
.end()
// And repeat the whole sequence 2 times
// with a 0.5s pause between each iteration
.repeatYoyo(2, 0.5f)
// Let's go!
.start();
espero que esté convencido :) Hay una gran cantidad de personas que ya están utilizando la motor en sus juegos o para la animación de la interfaz de usuario de Android.
Guau, esto es genial, gracias. –
Acabo de actualizar la descripción un poco, ya que el motor ha hecho un gran progreso desde la primera vez que escribí la respuesta :) –
@ AurélienRibon, ¿proporciona animación de un objeto a otro objeto diferente? –