Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置光标位置_Java_Android_Libgdx - Fatal编程技术网

Java 设置光标位置

Java 设置光标位置,java,android,libgdx,Java,Android,Libgdx,因此,我有一个游戏,我正在工作,一旦你玩完,我想让用户能够点击“再次播放”按钮,并能够在开始时重置。 为此,我在纹理上创建一个矩形,并使用contains()方法 重置方法: public void reset(){ speed=0; paraY = Gdx.graphics.getHeight() - para[parachuteState].getHeight(); gameState=0; backY = 0-Gdx.graphics.getHeight()

因此,我有一个游戏,我正在工作,一旦你玩完,我想让用户能够点击“再次播放”按钮,并能够在开始时重置。 为此,我在纹理上创建一个矩形,并使用contains()方法

重置方法:

public void reset(){
    speed=0;
    paraY = Gdx.graphics.getHeight() - para[parachuteState].getHeight();
    gameState=0;
    backY = 0-Gdx.graphics.getHeight();
    bach=0;
    Gdx.input.setCursorPosition(Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2);
}

因此,程序会识别被按下的按钮并重置,但当游戏再次结束时,它会自动重置,而不显示结束屏幕。我认为光标没有移动到中心,而是停留在按钮的顶部。我是否错误地使用了setCursorPosition()方法,或者是否有其他方法可以做到这一点?

该按钮将恰到好处。它可能看起来更复杂,但这是一种推荐的方法来做你想做的事情。 因此,要创建按钮,您应该执行以下操作:

Skin skin = new Skin();
skin.addRegions(uiTextureAtlas);
TextButton.TextButtonStyle buttonStyle = new TextButton.TextButtonStyle();
buttonStyle.up = skin.getDrawable("textureName");
buttonStyle.font = font;
Button button = new Button(buttonStyle);
button.addListener(new InputListener() {
    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
        reset();
        return true;
    }
});
button.setSize(100, 100);
button.setPosition(300, 400);
然后在Screen类中创建

Stage stage = new Stage();
stage.addActor(button);
Gdx.input.setInputProcessor(stage);

这个按钮就对了。它可能看起来更复杂,但这是一种推荐的方法来做你想做的事情。 因此,要创建按钮,您应该执行以下操作:

Skin skin = new Skin();
skin.addRegions(uiTextureAtlas);
TextButton.TextButtonStyle buttonStyle = new TextButton.TextButtonStyle();
buttonStyle.up = skin.getDrawable("textureName");
buttonStyle.font = font;
Button button = new Button(buttonStyle);
button.addListener(new InputListener() {
    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
        reset();
        return true;
    }
});
button.setSize(100, 100);
button.setPosition(300, 400);
然后在Screen类中创建

Stage stage = new Stage();
stage.addActor(button);
Gdx.input.setInputProcessor(stage);

但为什么你们不想用按钮来代替矩形的纹理呢?请在触控监听器上阅读。看起来您正在连续轮询最后一个已知的手指位置,而不是对屏幕上的新点击做出反应
setCursorPosition
影响箭头在电脑上的位置。它在Android上没有任何作用,因为没有光标。按钮会更简单吗?我有一张我在Adobe Illustrator中绘制的图片,我希望可以点击@enigaol,也感谢我将要了解的有关触摸监听器的信息@Tenfour04@ThomasS. 看看我的答案。如果您有任何问题,请随时提问:)但为什么不使用按钮而不是矩形的纹理呢?请阅读touch listeners。看起来您正在连续轮询最后一个已知的手指位置,而不是对屏幕上的新点击做出反应
setCursorPosition
影响箭头在电脑上的位置。它在Android上没有任何作用,因为没有光标。按钮会更简单吗?我有一张我在Adobe Illustrator中绘制的图片,我希望可以点击@enigaol,也感谢我将要了解的有关触摸监听器的信息@Tenfour04@ThomasS. 看看我的答案。如果您有任何问题,请随时提问:)