首页 > 解决方案 > 检测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();
    }       
}

标签: javaandroidlibgdx

解决方案


您必须在文本周围创建一个 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();
    }
}

推荐阅读