无法知道何时触摸屏幕上的特定区域?

时间:2014-05-19 21:23:09

标签: android libgdx

我使用的是libgdx版本0.9.9 这是我的代码,用于检测是否触摸了特定的屏幕区域:

if (Gdx.input.isTouched()) {
        Vector2 touchPos = new Vector2();
        touchPos.set(Gdx.input.getX(),Gdx.input.getY());
        if (playRect.contains(touchPos)) {
            game.setScreen(new GameScreen(game));
            dispose();
        }
    }

现在playRect就是这个

playRect = new Rectangle();
    playRect.x = 400 - playImage.getWidth() / 2;
    playRect.y = 240 - playImage.getHeight() / 2;
    playRect.width = 128;
    playRect.height = 64;

playImage的尺寸为128 * 64.我的问题是触摸没有被检测到它应该在哪里但略微错位。

2 个答案:

答案 0 :(得分:0)

你的代码看起来不错,但是有些按钮会改变它的位置吗? 我认为问题出在你的游戏矩形上。 请尝试输出矩形和触摸位置并告诉我你得到了什么。

if (Gdx.input.isTouched()) {
        Vector2 touchPos = new Vector2();
        touchPos.set(Gdx.input.getX(),Gdx.input.getY());
        System.out.println(Gdx.input.getX()+" "+Gdx.input.getY()+" "+playRect.toString());
        if (playRect.contains(touchPos)) {
            game.setScreen(new GameScreen(game));
            dispose();
        }
    }

答案 1 :(得分:0)

可能问题是,使用getY(),你得到Y坐标,y = 0位于屏幕顶部,而摄像头底部的y = 0,你需要反转y坐标

touchPos.set(Gdx.input.getX(),Gdx.graphics.getHeight()-Gdx.input.getY());