连续旋转图像

Rotate image continuously

我想不断逆时针旋转圆环图像这是我的代码

public class SpriteSheet extends ApplicationAdapter {
    Stage stage;

    @Override
    public void create () {
        stage=new Stage(new ScreenViewport());
        Group group=new Group();

        Image background =new Image(new Texture(Gdx.files.internal("background.png")));
        Image button=new Image(new Texture(Gdx.files.internal("btn.png")));
        Image ring=new Image(new Texture(Gdx.files.internal("ring2.png")));

        background.setName("background");
        button.setName("button");
        ring.setName("ring");

        group.addActor(background);
        group.addActor(button);
        group.addActor(ring);

        stage.addActor(group);

        background.setPosition(Gdx.graphics.getWidth()/2-background.getWidth()/2,Gdx.graphics.getHeight()/2-background.getHeight()/2);
        button.setPosition(Gdx.graphics.getWidth()/2-button.getWidth()/2,Gdx.graphics.getHeight()/2-button.getHeight()/2);

        ring.setPosition(255,105);

        ring.setOrigin(255f,105f);
        ring.rotateBy(2f); // I need continuous rotation here
    }

    @Override
    public void render () {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();
    }
}

我猜 Actions 就是你要找的。
可以将 Action 添加到 Actor(和子类),它们将在 Actor.
act(delta) 方法中执行 在您的情况下,您可以使用 Actions.rotateBy(float rotationAmount, float duration) 并使用 Actions.repeat(RepeatAction.FOREVER, rotateAction) 让它永远重复。

所以你的最终代码应该是这样的:

ring.addAction(Actions.repeat(RepeatAction.FOREVER, Actions.rotateBy(rotation, duration)));

其中 rotation 是旋转量(我猜是度数,但我不确定),duration 是旋转给定量所需的时间(以秒为单位) .