0

所以我有一个叫做 pokemon world 的世界,这就是我尝试渲染我的舞台的方式,其中包含一个名为 MenuActor 的自定义演员

public PokemonWorld(ChromeGame game) {
    this.game = game;
    createMenu();
}

protected void createMenu() {
    stage = new Stage();
    stage.setViewport(150, 720, true);
    menu = new MenuActor();
    stage.addActor(menu);
    Gdx.app.log(ChromeGame.LOG, "Menu Created");

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

    if (menuVisible) {
        stage.act(delta);
        stage.draw();
    }

}

这是我的自定义演员

public class MenuActor extends Actor {

    Texture region;

    public MenuActor() {
        super();
        region = new Texture(Gdx.files.internal("imgs/OptionBox.png"));
    }

    @Override
    public void draw(SpriteBatch batch, float parentAlpha) {
        super.draw(batch, parentAlpha);
        batch.draw(region, getX(), getY(), 150, 720, 0, 0,
                region.getWidth(), getHeight());
    }

}

正如你所看到的,actor 被赋予了一个纹理,并且在它的 draw 方法中,它绘制了它。在 PokemonWorld 类中,它将 MenuActor 添加到舞台并要求舞台绘制stage.draw();

我错过了什么?我觉得我正在做所有正确的步骤,但我可能错过了一个步骤/代码行。

4

1 回答 1

0

I suppose the last parameter should be some height (instead of getWidth()).

batch.draw(region, getX(), getY(), 150, 720, 0, 0,
                region.getWidth(), getWidth());
于 2013-08-22T03:44:34.057 回答