Libgdx如何检查鼠标是否悬停在TextField上?

时间:2016-02-18 02:41:32

标签: java events libgdx

使用Libgdx,我试图找到一种方法来检查鼠标是否悬停在给定的TextField对象上。

libgdx中的按钮可以使用#isOver()方法检查鼠标是否悬停在它上面。不幸的是,TextFields没有这个。

但是,您可以添加一个新的inputListener,如果鼠标悬停在TextField上,它可以调用事件等,但不允许检查它是否正在悬停。

我如何为TextFields实现#isOver()方法?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用 Actor 类中的hit()方法检查鼠标是否在 TextField (扩展 Actor )范围内

要获得鼠标位置,您应该使用 Gdx.input 中的getX()getY()方法,然后将它们转换为 TextField 的舞台使用screenToStageCoordinates()坐标:

TextField textField;

...

//in render() method
Vector2 mouseScreenPosition = new Vector2(Gdx.input.getX(), Gdx.input.getY());
Vector2 mouseLocalPosition = textField.screenToLocalCoordinates(mouseScreenPosition);

if(textField.hit(mouseLocalPosition.x, mouseLocalPosition.y, false) != null) {
    //the mouse is over the TextField
}