Libgdx舞台按钮触摸错误位置的事件

时间:2015-07-08 18:20:06

标签: java button libgdx viewport

我的libgdx阶段按钮出了问题。

我的游戏在16/9运行FitViewport。但我正在尝试使我的HUD响应多屏幕宽高比。例如,我想要我的暂停按钮而不是这个(它在fitviewport中的仍然绘图设置为16/9):

http://i.stack.imgur.com/eF6VR.png(带有16/9工作按钮的图像)

我通过添加这行代码(我也用于我的背景)修复了这个问题

Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

这些按钮现在就像这样:

http://i.stack.imgur.com/icxS3.png(带有按钮的图像仍然从第一张图像中获得旧触摸事件)

现在我遇到了真正的问题。按钮绘制就像我希望它们被绘制一样。但触摸事件仍然发生在我的第一张照片的旧按钮位置。有谁知道更好的方法来解决这个问题?我尝试查看多个视口但是无法找到一个使用多个视口执行此操作的好方法。

(由于我的声誉,我不允许发布图片。任何人都可以用图片编辑我的帖子而不是图片网址吗?谢谢你)

感谢阅读和帮助。

1 个答案:

答案 0 :(得分:0)

如果您正在使用舞台,请不要致电glViewport,因为舞台正在使用尝试管理glViewport来电的Viewport课程。这真的搞砸了你。

接下来,请确保您在stage.getViewport().update(width, height, true)中呼叫resize,因为@noone说。如果你不这样做,Stage2d永远不会表现得正确。

最后,使用ExtendViewport而不是FitViewport。如果你需要FitViewport用于游戏本身,那么使用一个单独的Stage实例和自己的用于UI的Viewport。您可以使用InputMultiplexor组合两个阶段的输入。