No se puede enlazar una acción. LibGDX

He hecho una pregunta como hace 4 días. Tengo algo de ayuda y ahora mi código parece

ColorAction actionBtG = new ColorAction(); ColorAction actionGtB = new ColorAction(); SequenceAction sequenceAction; RepeatAction repeatAction = new RepeatAction(); ShapeRenderer shapeRenderer; Color blue = new Color(Color.BLUE); @Override public void create () { shapeRenderer = new ShapeRenderer(); actionBtG.setColor(blue); actionBtG.setEndColor(Color.GOLD); actionBtG.setDuration(5); actionGtB.setColor(blue); actionGtB.setEndColor(Color.BLUE); actionGtB.setDuration(5); sequenceAction = new sequenceAction(actionBtG,actionGtB); repeatAction = new RepeatAction(): repeatAction.setAction(sequenceAction); repeatAction.setCount(RepeatAction.FOREVER); } @Override public void render () { repeatAction.act(Gdx.graphics.getDeltaTime()); Gdx.gl.glClearColor(1,1,1,1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(blue); shapeRenderer.rect(100, 100, 40, 40); shapeRenderer.end(); } 

Pero todavía funciona mal. Actúa una vez y se detiene. Cuando necesito hacer eso. De azul a oro, luego de oro a azul. Realmente agradecería cualquier ayuda, porque estoy aprendiendo libGDX. Gracias.

He leído todas las respuestas y editado mi código, pero todavía no funciona:

 private Actor actionManager = new Actor(); ColorAction actionBtG = new ColorAction(); ColorAction actionGtB = new ColorAction(); SequenceAction sequenceAction; RepeatAction repeatAction; Color activeColor = new Color(Color.BLUE); ShapeRenderer shapeRenderer; @Override public void create () { shapeRenderer = new ShapeRenderer(); actionBtG.setColor(activeColor); actionBtG.setEndColor(Color.GOLD); actionBtG.setDuration(5); actionGtB.setColor(activeColor); actionGtB.setEndColor(Color.BLUE); actionGtB.setDuration(5); sequenceAction = new SequenceAction(actionBtG,actionGtB); repeatAction = new RepeatAction(); repeatAction.setAction(sequenceAction); repeatAction.setCount(RepeatAction.FOREVER); actionManager.addAction(repeatAction); } 

Aquí está render ()

 @Override public void render () { Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); actionManager.act(Gdx.graphics.getDeltaTime()); shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(blue); shapeRenderer.rect(100, 100, 40, 40); shapeRenderer.end(); } 

Ahora no cambia el color, siempre es azul.

Te encuentras con un error relacionado con Acciones que esperan ser usadas con Actores. Muchas de las acciones funcionan bien sin un actor, pero la acción de secuenciación no, porque espera que se adjunta a un actor para detectar si todavía debe estar ejecutándose.

Así que una solución algo hacky sería agregar un actor ficticio a su acción de nivel superior cuando lo configura. Esto simula lo que sucede cuando se agrega una acción a un actor en una etapa.

 repeatAction.setActor(new Actor()); 

Si piensa utilizar más acciones en su aplicación, puede crear un solo actor que utilice para administrar todas sus acciones:

 private Actor actionManager = new Actor(); //when creating actions: actionManager.addAction(repeatAction); //In render(), use this instead of calling act on individual actions //It will call act on all actions in the actor: actionManager.act(Gdx.graphics.getDeltaTime()); 

Y, por supuesto, si quieres usar una etapa para dibujar cosas, simplemente puedes añadir tus acciones al escenario en lugar de usar un actor como gestor de acciones.

Personalmente encuentro que las acciones de scene2d deben ser más fáciles de usar y configurar que UniversalTweenEngine.

Libgdx Las acciones son sólo para Actores Libgdx. Está creando una acción pero no la asigna a un Actor. Sólo está configurando el color shapeRenderer en azul, sin tener en cuenta la acción que creó. Recomendaría usar una interpolación del motor de interpolación universal si desea cambiar el color con el tiempo.

Alternativamente, se puede abandonar el formador y usar una imagen (subclase de actor). A continuación, asignar la acción a la imagen. Pero para hacer eso, tendrías que crear un escenario y añadir tu imagen al escenario. Vea el wiki de scene2d .

De cualquier manera va a ser unos pocos pasos adicionales. Tal vez un hack barato para conseguir este trabajo fácilmente sería:

  1. Sólo crear una imagen:

    Imagen i = nueva imagen ();

  2. Asignar su acción a la imagen i

    I.addAction (repeatAction);

  3. Reemplazar repeatAction.act (…) con

    I.act (Gdx.graphics.getDeltaTime ());

  4. Cambiar shapeRenderer.setColor (azul) a

    ShapeRenderer.setColor (i.getColor ());

Espero que ayude.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.