Cómo detectar el final de la acción en Libgdx (0.9.7) de android

En la última versión de Libgdx (0.9.7 o libgdx-nightly-20120904), el oyente de la acción se elimina. Así que no sé cómo completar mi función de manera eficiente:

  1. Mover un sprite al destino.
  2. El movimiento contiene muchas MoveToActions o MoveByActions.
  3. Actúe la siguiente acción después de que termine el anterior.
  4. La acción de resto se puede modificar antes de actuar.

En realidad, el punto principal es cómo actuar la siguiente acción después de la anterior es el final, y creo que comparar el tiempo acto no es un método sabio.

¿Puede alguien ayudarme? Gracias !

Creo que el mejor enfoque sería mantenerlo sencillo. Podrías encuestar si el actor tiene alguna acción dejada usando

if (actor.getActions().size() > 0) {no actions left!!} 

Un buen lugar para colocar ese código estaría cerca del actor.act ();

De todos modos, puede ejecutar una secuencia de acciones usando una secuenciaAcción:

 import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*; ... actor.addAction(sequence(moveTo(200, 100, 2), moveBy(20,30, 3), delay(0.5f), rotateTo(180, 5))); 

Eso ejecutaría esas acciones una tras otra a medida que terminaran.

Puedes consultar la documentación de los nightlies para más información aquí: http://code.google.com/p/libgdx/wiki/scene2d

Es eso lo que necesita? (No estoy seguro de haber entendido el paso 4).

Si necesita algo más específico por favor pregunte de nuevo. También puede echar un vistazo al código fuente de la clase Actor para tener una mejor comprensión de cómo se manejan las acciones. https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/scenes/scene2d/Actor.java

No estoy seguro de si esto responde a su pregunta, pero esta es una manera de simular un "escucha acciones completadas":

 Action completeAction = new Action(){ public boolean act( float delta ) { // Do your stuff return true; } }; Action actions = sequence(fadeIn(1f), fadeOut(1f), completeAction); 

(Fuente: http://steigert.blogspot.com.br/2012/07/13-libgdx-tutorial-libgdx-refactoring.html )

Libgdx 0.9.7

 Action a = new Action(); render(){ if (a.getTime >= a.getDuration()) Gdx.app.log("a", "is done"); } 

Advertencia en la acción de verificación isDone:

mientras

DelayAction.getTime> 0 y (delayAction.getTime <delayAction.getDuration)

entonces

Alpha.getTime> alpha.getDuration

hasta

DelayAction.getTime> delayAction.getDuration.

Ejemplo:

 AlphaAction alpha = new AlphaAction(); alpha.setAlpha(0.2f); alpha.setDuration(1); DelayAction delayAction = new DelayAction(); delayAction.setDuration(1); SequenceAction sequenceAction = new SequenceAction(); sequenceAction.addAction(alpha); sequenceAction.addAction(delayAction); 

Más en http://congdongandroid.vn/

  • LinearLayout analógico dentro de la tabla en LibGDX
  • Recortar la imagen con libgdx
  • LibGdx: Sprite no se dibuja cuando hay una etapa
  • Juego libgdx se bloquea en algunos dispositivos
  • Dibujo de un gradiente en Libgdx
  • Exportar firmado APK con error de ProGuard
  • GdxRuntimeException en Android: no se pudo cargar la biblioteca compartida 'gdx' para el destino
  • Cómo cambiar pantallas en Scene2D libGDX
  • ¿Cómo obtener una "pantalla de carga" con libgdx?
  • LibGDX - Cómo integrar AdMob para iOS y Android
  • Libgdx o playn?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.