0

このコードは、左、右、下、または上に移動するときに、画像の境界線がちらつきます (フラッシュ)。Screen クラスの render() メソッドのデルタ値を使用しても、画像の境界線が点滅するのはなぜですか。

    package com.me.mygdxgame;
    import com.badlogic.gdx.Gdx;
    import com.badlogic.gdx.Input.Keys;
    import com.badlogic.gdx.InputProcessor;
    import com.badlogic.gdx.graphics.GL10;
    import com.badlogic.gdx.graphics.OrthographicCamera;
    import com.badlogic.gdx.graphics.Texture;
    import com.badlogic.gdx.graphics.Texture.TextureFilter;
    import com.badlogic.gdx.graphics.g2d.Sprite;
    import com.badlogic.gdx.graphics.g2d.SpriteBatch;
    import com.badlogic.gdx.math.Vector3;
    public class MoveSpriteExample extends GdxTest implements InputProcessor  {
        Texture texture;
        SpriteBatch batch;
        OrthographicCamera camera;
        Vector3 spritePosition = new Vector3();
        Sprite sprite;
        public void resize (int width, int height) {
        }

        public void create() {

            float w = Gdx.graphics.getWidth();
            float h = Gdx.graphics.getHeight();
            batch = new SpriteBatch();
            camera= new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
            camera.setToOrtho(false, w, h);
            texture = new Texture(Gdx.files.internal("data/grasswall.png"));
            texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
            sprite = new Sprite(texture);

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

            sprite.setPosition(spritePosition.x,spritePosition.x);
           lastUpdateTime = System.nanoTime();
        }

    public void Update(float Delta)
    {
        if (Gdx.input.isKeyPressed(Keys.D)==true)
        {
            spritePosition.x += 150*(Delta / 1000000000.0);

        }else if (Gdx.input.isKeyPressed( Keys.A)==true)
        {
            spritePosition.x -= 150*(Delta / 1000000000.0);
        }
        else if (Gdx.input.isKeyPressed( Keys.Z)==true)
        {
            spritePosition.y -= 150*(Delta / 1000000000.0);
        }
        else if (Gdx.input.isKeyPressed( Keys.W)==true)
        {
            spritePosition.y += 150*(Delta / 1000000000.0);
        }
    }
    float lastUpdateTime;
    float currentTime;
        public void render() {
            currentTime = System.nanoTime();
            Gdx.gl.glClearColor(1, 1, 1, 1);
            Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

            camera.update();

            Update(currentTime - lastUpdateTime);

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

            batch.setProjectionMatrix(camera.combined);

            batch.begin();

            sprite.draw(batch);

            batch.end();

            lastUpdateTime = currentTime;
        }
    }

サンプル付きのコードを提供してください

4

1 に答える 1