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.
- Uso de scene2d.ui con libgdx: ¿De dónde proviene la piel?
- LinearLayout analógico dentro de la tabla en LibGDX
- Obtener un actor por nombre en libgdx
- Centre SelectBox texto en libgdx usando scene2d
- Libgdx - cómo agregar la imagen de fondo en la etapa?
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.
- Cómo cambiar pantallas en Scene2D libGDX
- Cómo dibujar la clase Button en libgdx
- Fondo de libgdx Cambio de imagen
- Cómo dibujar TiledMap usando scene2d
- Scale2d escala de botón con libgdx
- Scene2d cómo manejar actor tocado (LibGDX)
- ¿Cuándo usar ShapeRenderer, Mesh + SpriteBatch, Box2D y Scene2D en Libgdx?
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:
-
Sólo crear una imagen:
Imagen i = nueva imagen ();
-
Asignar su acción a la imagen i
I.addAction (repeatAction);
-
Reemplazar repeatAction.act (…) con
I.act (Gdx.graphics.getDeltaTime ());
-
Cambiar shapeRenderer.setColor (azul) a
ShapeRenderer.setColor (i.getColor ());
Espero que ayude.