java - Libgdx 光标捕获后消失

标签 java libgdx

我将鼠标设置为“捕获”

Gdx.input.setCursorCatched(true);

但启用此设置后光标消失了。 我正在开发一个等距 2d rts 游戏,我确实需要强制光标留在窗口内,但我显然也需要显示光标。 我正在使用平铺 map 来绘制 map 。

最佳答案

我有一个游戏,无论何时/无论玩家触碰或触碰,我都会画一个点,如果你捕获光标,它就会消失,这是预期的行为。

要解决此问题,您必须使用 TextureSpriteTextureRegion 自己绘制鼠标。这是一个例子:
绘制光标:

public class MyCursor {

    private TextureRegion cursor;
    private float x, y;

    public MyCursor(TextureRegion cursorRegion) {
        cursor = cursorRegion;
    }

    public void render(SpriteBatch spriteBatch) {
        spriteBatch.begin();
        spriteBatch.draw(cursor, x, y);
        spriteBatch.end();
    }

    public void setPosition(float x, float y) {
        this.x = x;
        this.y = y;
    }
}

处理输入:

public class MyInput extends InputAdapter {

    private OrthographicCamera camera;
    private MyCursor myCursor;

    public MyInput(OrthographicCamera camera, MyCursor myCursor) {
        this.camera = camera;
        this.myCursor = myCursor;
    }

    @Override
    public boolean mouseMoved(int screenX, int screenY) {
        Vector3 temp = camera.unproject(new Vector3(screenX, screenY, 0));
        myCursor.setPosition(temp.x, temp.y);
        return true;
    }
}

另外不要忘记启用输入:

public class MyGame extends Game {

    @Override
    public void create() {
        OrthographicCamera camera = new OrthographicCamera();
        TextureRegion cursorRegion = new TextureRegion(new Texture("myCursor.png"));
        MyCursor cursor = new MyCursor(cursorRegion);
        MyInput myInput = new MyInput(camera, cursor);
        Gdx.input.setInputProcessor(myInput);
    }
}

关于java - Libgdx 光标捕获后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270902/

相关文章:

java - 如何成功导入具有所有依赖项的 AndroidX 包?

java - 按home键时如何防止onPause()?

java - CAS 4.0 LDAP 不会查询服务器

java - 带 Action 的真值表

java - 如何将对象替换或删除为数组中的非空值

java - array.remove(0) 删除多个元素

java - 在android中手机重启时重启服务

java - JTree:可变行高

java - 如何将播放器置于 libgDX 相机的中心

java - 如何减少 libgdx 中 2D Sprite 的高 RAM 使用率