Vini
Vini

Reputation: 116

Libgdx - Action on actor

First, thank you for reading this post, any help is welcome. My actor is correctly rendered on the stage, but with the Actions.moveTo, it leaves a trail ? I just don't get it. It's like the texture is rendered at a new position on every new frame.

enter image description here

Here is my code for my class :

public class SlidingCap extends Actor {
    private Texture capOver;
    private float xPosition;
    private float yPosition;

    public SlidingCap(float x, float y) {
        this.xPosition = x;
        this.yPosition = y;
        this.capOver = new Texture(Gdx.files.internal("images/cappingPlate.png"));
        setBounds(x, y, 288, 180);
    }

    @Override
    public void act(float delta) {
        super.act(delta);
    }

    @Override
    public void draw(Batch batch, float parentAlpha) {
        batch.draw(capOver, getX(), getY(), 288, 180);
        this.addAction(Actions.moveTo(xPosition+10, yPosition+10, 5f));
    }   
}

And the ScreenGame render method:

@Override
public void render(float delta) {
    gameStage.act(delta);
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    this.capMiniGame = new SlidingCap(100, 100);                
    this.gameStage.addActor(capMiniGame);
    gameStage.draw();
}

Upvotes: 0

Views: 118

Answers (1)

dfour
dfour

Reputation: 1376

You're adding a new SlidingCap every frame with this code

this.capMiniGame = new SlidingCap(100, 100);                
this.gameStage.addActor(capMiniGame);

Try adding the SlidingCap once in the Create or show method instead of every frame

Upvotes: 1

Related Questions