1

此代码使图像在向左、向右、向下或向上移动时闪烁。

public class MoveSpriteExample extends GdxTest implements InputProcessor  {
    Texture texture;
    SpriteBatch batch;
    OrthographicCamera camera;
    Vector3 spritePosition = new Vector3();
    Sprite sprite;

    public void create() {

        float w = Gdx.graphics.getWidth();
        float h = Gdx.graphics.getHeight();
        batch = new SpriteBatch();
        camera = new OrthographicCamera();
        camera.setToOrtho(false, w, h);

        texture = new Texture(Gdx.files.internal("data/TestImg.png"));

        texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
        sprite = new Sprite(texture);

        sprite.setSize(32, 32);
        spritePosition.y=100;

        sprite.setPosition(spritePosition.x,spritePosition.x);

    }

    public void render() {
        // set the clear color and clear the screen.
        Gdx.gl.glClearColor(1,1, 1, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    //      camera.apply(Gdx.gl10);

        sprite.setPosition(spritePosition.x,spritePosition.y);


        batch.begin();
        sprite.draw(batch);
        batch.end();


        if (Gdx.input.isKeyPressed(Keys.D)==true)
        {
            spritePosition.x += 2;
        }else if (Gdx.input.isKeyPressed( Keys.A)==true)
        {
            spritePosition.x -= 2;
        }
        else if (Gdx.input.isKeyPressed( Keys.Z)==true)
        {
            spritePosition.y -= 2;
        }
        else if (Gdx.input.isKeyPressed( Keys.W)==true)
        {
            spritePosition.y += 2;
        }

        //  camera.unproject(spritePosition.set(Gdx.input.getX(), Gdx.input.getY(), 0));
        // if a finger is down, set the sprite's x/y coordinate.

    }
}
4

1 回答 1

1

是的,它确实会闪烁,因为您每帧将其移动 2px。这就像一秒钟内 120 像素。您需要根据增量时间移动它。(当时它总是 2px,那不是 smothy)

例如,您希望每秒将其移动 50px 到按下的方向,您可以这样做。

spritePosition.y += 50f*Gdx.graphics.getDeltaTime();

您确实会根据 deltatime 而不是帧速率来更新所有内容。deltatime 是最后一帧和本帧之间的时间。

通常,您会使用屏幕来创建这样的设置。如果设置了屏幕,则渲染方法确实会以增量时间调用。(来自接口的方法)

你应该看看steigert 教程。它确实为您提供了一个非常好的使用 libgdx 的开始。祝你好运。

于 2013-09-23T21:00:01.877 回答