输入 - LibGdx 中的操作处理
Input - Action Handling in LibGdx
我正在做一个 libgdx 游戏作为练习。它非常简单,类似于 "escape" 类游戏。只是带有背景、一些项目和 left/right 箭头的屏幕。
由于libgdx让一切变得简单,我正在徘徊是否有一种简单的方法来处理动作。现在它只是 onClick() 方法中的一堆 "if else" 语句。现在好了,但是如果有数十或数百个项目,点击时会很乱,而且可能会很慢。
public void onClick(int scrX, int scrY){
pX = (scrX/viewW)*WORLD_W;
pY = (scrY/viewH)*WORLD_H;
if (pX > 10 && pX < 20 && pY > 10 && pY < 20) {
if (stage.getInfo().getLeft() == true) {
Gdx.app.log("Click", "Left");
stage = new StageGame(stage.getInfo().getLeftStage());
}
}
else if(pX > 80 && pX < 90 && pY > 10 && pY < 20) {
if (stage.getInfo().getRight() == true) {
Gdx.app.log("Click", "Right");
stage = new StageGame(stage.getInfo().getRightStage());
}
}
}
我想在这里切换,但我仍然必须使用一些条件。
另一个想法是矩阵,比方说 100x100。在每个阶段,它都会从文件中读取。单击后,x 和 y 会很容易地转换为网格值,并且会发生适当的操作。但这仅适用于静态游戏,并不能确定内存使用情况和处理该矩阵。
我很确定这一切都错了,但我找不到我无法命名的东西:P
请帮忙!
我认为您可以使用 Libgdx Actors 基础设施(又名 Scene2d)来帮助组织您的屏幕元素。 Actor 可以在屏幕上有一个位置,以及它们自己的 onClick
处理程序。 Libgdx 将负责确定点击了哪个 Actor 并将调用其处理程序。参见 When to use actors in libgdx? What are cons and pros? and https://github.com/libgdx/libgdx/wiki/Scene2d
顺便说一句,您真的不需要担心点击检测的性能,除非屏幕上有 1000 多个对象(然后您还有其他问题)。在这一点上,我会更担心使代码可维护和可调试。
我正在做一个 libgdx 游戏作为练习。它非常简单,类似于 "escape" 类游戏。只是带有背景、一些项目和 left/right 箭头的屏幕。
由于libgdx让一切变得简单,我正在徘徊是否有一种简单的方法来处理动作。现在它只是 onClick() 方法中的一堆 "if else" 语句。现在好了,但是如果有数十或数百个项目,点击时会很乱,而且可能会很慢。
public void onClick(int scrX, int scrY){
pX = (scrX/viewW)*WORLD_W;
pY = (scrY/viewH)*WORLD_H;
if (pX > 10 && pX < 20 && pY > 10 && pY < 20) {
if (stage.getInfo().getLeft() == true) {
Gdx.app.log("Click", "Left");
stage = new StageGame(stage.getInfo().getLeftStage());
}
}
else if(pX > 80 && pX < 90 && pY > 10 && pY < 20) {
if (stage.getInfo().getRight() == true) {
Gdx.app.log("Click", "Right");
stage = new StageGame(stage.getInfo().getRightStage());
}
}
}
我想在这里切换,但我仍然必须使用一些条件。 另一个想法是矩阵,比方说 100x100。在每个阶段,它都会从文件中读取。单击后,x 和 y 会很容易地转换为网格值,并且会发生适当的操作。但这仅适用于静态游戏,并不能确定内存使用情况和处理该矩阵。
我很确定这一切都错了,但我找不到我无法命名的东西:P 请帮忙!
我认为您可以使用 Libgdx Actors 基础设施(又名 Scene2d)来帮助组织您的屏幕元素。 Actor 可以在屏幕上有一个位置,以及它们自己的 onClick
处理程序。 Libgdx 将负责确定点击了哪个 Actor 并将调用其处理程序。参见 When to use actors in libgdx? What are cons and pros? and https://github.com/libgdx/libgdx/wiki/Scene2d
顺便说一句,您真的不需要担心点击检测的性能,除非屏幕上有 1000 多个对象(然后您还有其他问题)。在这一点上,我会更担心使代码可维护和可调试。