我目前在box2d playarea上呈现UI时遇到问题。截至目前,按钮呈现在屏幕的一角,但不会对点击作出反应,因为屏幕似乎认为它不在那里。只有它的图片。以下是屏幕工作原理的代码。什么顺序正在呈现。在spritebatch开始和结束之前和之后的凸轮缩放,更新和设置是一个测试,导致角落里的精灵,但它仍然没有做任何事情。我很难过,并且会很感激如何以一种好的方式处理渲染。
public synchronized void render(float delta) {
getCamControll().update();
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// RENDER SPRITES
batch.setProjectionMatrix(cam.combined);
batch.begin();
Iterator<Renderable> itr = renderables.iterator();
while (itr.hasNext()) {
Renderable r = itr.next();
r.render(batch);
}
batch.end();
// RENDER DEBUG
sr.setProjectionMatrix(cam.combined);
sr.begin(ShapeType.Line);
for (Renderable r : renderables) {
r.debug(sr);
}
sr.end();
// RENDER GUI
float camzoom = cam.zoom;
Vector3 camPos = cam.position.cpy();
cam.zoom = 1;
cam.position.set(Vector2.Zero, cam.position.z);
cam.update();
batch.setProjectionMatrix(new Matrix4());
if (stage != null) {
batch.begin();
stage.draw();
Array<Actor> actors = stage.getActors();
batch.end();
}
cam.zoom = camzoom;
cam.position.set(camPos);
cam.update();
}
答案 0 :(得分:4)
您需要正确设置输入处理程序,即设置/初始化代码中的某个位置(创建阶段之后):
Gdx.input.setInputProcessor(stage);
如果box2d(或其他任何东西)除了场景之外还需要处理输入,你应该看一下Libgdx的InputMultiplexer来组合输入处理程序。