Queue multiple entity modifiers in AndEngine

Estoy tratando de tener un sprite ("puntero" abajo) a lo largo de dos caminos, uno tras otro. Aquí está mi código:

scene.attachChild(pointer); pointer.clearEntityModifiers(); pointer.registerEntityModifier(new MoveModifier( 1.0f, 540, 960, 1000, 1000, new IEntityModifierListener() { public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {} public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) { clickSound.play(); pointer.clearEntityModifiers(); pointer.registerEntityModifier(new MoveModifier( 1.0f, pointer.getX(), pointer.getY(), 500, 2500, new IEntityModifierListener() { public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {} public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) { pointer.clearEntityModifiers(); pointer.detachSelf(); } }, EaseCubicInOut.getInstance() )); } }, EaseCubicInOut.getInstance() )); 

El puntero se mueve a lo largo de la primera ruta como se esperaba y, a continuación, se reproduce el clickSound y, a continuación, no pasa nada. El segundo MoveModifier no tiene ningún efecto. ¿Qué estoy haciendo mal aquí?

No estoy seguro de por qué su código no funciona, pero creo que puede lograr lo mismo utilizando el SequenceEntityModifier :

 scene.attachChild(pointer); pointer.clearEntityModifiers(); pointer.registerEntityModifier(new SequenceEntityModifier( new MoveModifier#1(...), new MoveModifier#2(...))); 

Mi primera conjetura woud ser, que el código después de pointer.clearEntityModifiers(); ya no se ejecuta, ya que anula el registro de los modificadores. Sólo estoy pensando en voz alta aquí, así que por favor dime si estoy equivocado. Tal vez usted puede intentar registrar algo para ver si el método vuelve después de esta línea. Algo como:

 pointer.clearEntityModifiers(); Log.v("EntityModifier", "the method continues..."); 

Siempre me resulta difícil administrar las definiciones de clases internas, debido al estado de las variables a las que se accede desde dentro. Como en su caso el pointer . Si nada funciona, todavía puede intentar hacerlo todo en una sola corrida. Así que en lugar de deshacerse del primer modificador de oyentes y registrar otro, cree su propio Oyente, con una bandera en algún lugar para decirle qué hacer y reutilizar ese oyente:

 public class MyModifierListener extends IEntityModifierListener{ private Pointer pointer; // declare your pointer, so you have a reference within the listener private boolean firstRun; // a flag to check if it is the first time the modifier is used public MyModifierListener(Pointer pointer){ super(); this.pointer = pointer; // init the pointer within the constructor this.firstRun = true; // should be true the first time } public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) { } public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) { if(firstRun){ clickSound.play(); firstRun=false; pointer.registerEntityModifier(new MoveModifier(1.0f, pointer.getX(), pointer.getY(), 500, 2500, this), EaseCubicInOut.getInstance()); }else{ pointer.detachSelf(); } } } 

Y para usarlo algo así:

 MyModifierListener myListener = new MyModifierListener(pointer); pointer.registerEntityModifier(new MoveModifier(1.0f, 540, 960, 1000, 1000, myListener), EaseCubicInOut.getInstance()); 

No pude probar esto, así que estas son sólo conjeturas salvajes. Dime si encuentras algo.

respecto a Christoph

  • Dibuja una ruta en AndEngine para mover una imagen o un sprite
  • desbloqueo de niveles en la lógica del juego de Android
  • LiveWallpaper error ejemplo Andengine
  • Confused about Andengine Sistema (s) de coordenadas
  • AndEngine Juego Loop. ¿Dónde está?
  • Imagen de fondo de AndEngine
  • Optimización de AndEngine juego
  • ¿Cuáles son los pasos para tomar las muestras de AndEngine Repository
  • Desplazamiento de un childscene en AndEngine
  • Android AndEngine: manejar correctamente la detección de colisión
  • Eliminar un objeto cuando ocurre una colisión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.