java - 检测LibGdx中文本点击的方法
问题描述
如何使用 LibGdx 检测对文本的点击?例如,我希望用户能够点击 String Show Highscore
。我遇到的问题是我已经实现了一个 if 语句,它指出如果点击任何东西,游戏就会开始。我现在要写什么样的方法,让用户可以点击Show Highscore
?如有必要,我可以更改使用整个屏幕的 if 语句。谢谢 :)
public class MainMenuScreen implements Screen {
final FlappyWizardGame game;
OrthographicCamera camera;
String buttonHighscore = "Show Highscore";
public MainMenuScreen(FlappyWizardGame game) {
this.game = game;
camera = new OrthographicCamera();
camera.setToOrtho(false, 1280, 720);
screenHeight = Gdx.graphics.getHeight();
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
game.batch.setProjectionMatrix(camera.combined);
game.batch.begin();
game.batch.draw(game.hermine, 0, 0, (int)(game.hermine.getWidth() * 0.25), (int)(game.hermine.getHeight() * 0.25));
game.font.draw(game.batch, "Welcome to Flappy Wizard!!! ", camera.viewportWidth / 3, camera.viewportHeight - 100);
game.font.draw(game.batch, "Tap anywhere to begin!", camera.viewportWidth / 3, camera.viewportHeight - 150);
game.font.draw(game.batch, buttonHighscore, camera.viewportWidth / 3, camera.viewportHeight - 200);
if (Gdx.input.isTouched()) {
game.setScreen(new GameScreen(game));
dispose();
}
}
解决方案
您必须在文本周围创建一个 Rectangle:
Rectangle rectangle = new Rectangle(x, y, width, height);
然后在你的 if 语句中检查触摸事件是否在矩形中:
if(Gdx.input.isTouched()){
if(rectangle.contains(Gdx.input.getX(), Gdx.input.getY())){
openHighscore();
} else{
game.setScreen(new GameScreen(game));
dispose();
}
}
推荐阅读
- python - Python通过另一个列表解析字符串列表并返回匹配项
- python - Pandas 对具有可变子数组长度的列求和并在结果中添加更多列
- r - 缺少编码为 NA 和“NA”的数据
- linux - 从 Wordlist 中删除用户的 Bash 脚本
- javascript - 为什么水龙头运营商会影响水流?
- php - PHP 错误:我在 php 中获取特定用户 ID 时遇到问题
- angular - snapshotChanges() 在 Angular 对话框中不起作用
- google-cloud-platform - Google Cloud 将默认端口直接连接到 GlassFish 端口
- python - 过滤熊猫中每个类别数据中的异常值
- java - Java - 如何使用已作为参数传递的元素填充数组