3

私はLibgdxとScene2dをテストしています。この小さなプログラムでロゴが表示されることを期待していましたが、黒い画面しか描画されません。私が何を見逃しているのか分かりますか?

public class MyGame implements ApplicationListener {
    private Stage stage;

    @Override
    public void create() {
        stage = new Stage(800, 800, false);
        Gdx.input.setInputProcessor(stage);
        MyActor actor = new MyActor();
        stage.addActor(actor);
    }

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

    @Override
    public void dispose() {
        stage.dispose();
    }

    @Override
    public void resize(int width, int height) {
            stage.setViewport(800, 800, false);
    }
}


public class MyActor extends Actor {
    Sprite sprite;

    public MyActor() {
        sprite = new Sprite();
        sprite.setTexture(new Texture("data/libgdx.png"));

        setWidth(sprite.getWidth());
        setHeight(sprite.getHeight());
        setBounds(0, 0, getWidth(), getHeight());
        setTouchable(Touchable.enabled);
        setX(0);
        setY(0);
    }

    @Override
    public void draw(SpriteBatch batch, float parentAlpha) {
        Color color = getColor();
        batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
        batch.draw(sprite, getX(), getY());
    }
}
4

4 に答える 4

11

テクスチャを使用してスプライトを作成し、Gdx.file.internalを使用します。

sprite = new Sprite(new Texture(Gdx.files.internal("data/libgdx.png")));

とにかく、画像を表示して操作したいだけの場合は、Imageクラスを使用することをお勧めします。

    private Stage stage;
    private Texture texture;

    @Override
    public void create() {
        stage = new Stage();
        Gdx.input.setInputProcessor(stage);

        texture = new Texture(Gdx.files.internal("data/libgdx.png"));
        TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275);          

        com.badlogic.gdx.scenes.scene2d.ui.Image actor = new com.badlogic.gdx.scenes.scene2d.ui.Image(region);
        stage.addActor(actor);
    }

    @Override
    public void render() {
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();
    }
于 2013-02-20T08:16:50.717 に答える
3

Actorの高さ(setHeight(height))と幅(setWidth(width))をの値に明示的に設定するまで、私も黒い画面を表示していましたSprite

于 2013-10-28T16:25:34.253 に答える
0
tex = new Texture(Gdx.files.internal("happy.png"));
Image happy = new Image(tex);    
/* happy.setBounds(happy.getX(), happy.getY(), happy.getWidth(), happy.getHeight());  not needed if using full image               */    
stage.addActor(happy);
于 2016-05-15T16:46:58.330 に答える
0

あなたの問題は、drawメソッドでこの線である可能性が最も高いです

batch.draw(sprite, getX(), getY());

スプライトを描画するときに見たコードは

sprite.draw(batch);
于 2018-10-22T08:39:31.607 に答える