【问题标题】:How to add a button with a Stage class that does not implement the Screen interface?如何使用未实现 Screen 接口的 Stage 类添加按钮?
【发布时间】:2016-02-18 00:00:01
【问题描述】:

我有自己的 Libgdx 类,它没有实现 Screen 界面。我控制我的相机移动。它是一个正交相机,视口宽度为 WorldWidth,视口高度为 WorldHeight。我正在尝试通过 Stage 类添加一个按钮。我可以添加它,我看到它已绘制,但由于我没有实现屏幕界面,我在我的 render() 方法上调用 stage.draw(),而不是在似乎是的 render(float delta) 方法上屏幕界面需要。为了比较,我绘制了一个大小为 (0.25fcamera.viewportWidth,0.25fcamera.viewportHeight) 的精灵。但是,当我调用 stage.draw() 时,这个精灵没有绘制。按钮绘制,但它看起来非常小,即使我将其大小设置为 (0.25fcamera.viewportWidth,0.25fcamera.viewportHeight)。这是上的代码 我如何添加我的按钮类:

stage1= new Stage();
btn = new Button(new SpriteDrawable(new Sprite(new Texture("texone.png"))),
new SpriteDrawable(new Sprite(new Texture("textwo.png"))));
btn.addListener(new ClickListener(){
public void clicked(InputEvent event, float x, float y){ }
});
btn.setBounds(0f,0f,0.25f*camera.viewportWidth,0.25f*camera.viewportHeight);
btn.setPosition(0f,100f);
stage1.add(btn);
Gdx.input.setInputProcessor(stage1);
//a few lines down to my render() method
@Override
public void render(){
//.... more regular code that goes in method
batch.begin();
//more lines of code that draw my sprites
stage1.draw();
batch.end();
}

我想知道的是为什么按钮这么小,为什么我的其他精灵不画?也许有一种方法可以将我的正交相机添加到我的 stage1 对象中。而且,如果我将正交相机添加到我的 stage1 对象,我应该如何在 resize 方法上更新我的 stage1 视口?请指教。

谢谢

【问题讨论】:

  • 你可以在batch.end()之后移动stage1.draw(),它有自己的批处理开始和结束。当你创建你的舞台时,你可以指定一个视口来为它创建一个相机。
  • 你太棒了!感谢您的正确答案。 @Barodapride

标签: android libgdx rendering


【解决方案1】:

我没有看到您为批处理设置了投影矩阵。你会调用这个函数吗?

batch.setProjectionMatrix(camera.combined);

你应该在渲染函数中这样做

【讨论】:

    猜你喜欢
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2017-06-13
    相关资源
    最近更新 更多