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

3
使用Libgdx,我正在尝试找到一种方法来检查鼠标是否悬停在给定的TextField对象上。
在libgdx中,按钮具有使用#isOver()方法检查鼠标是否悬停在其上的功能。不幸的是,TextField没有这个功能。
但是,您可以添加一个新的inputListener,在其中可以调用事件,如果鼠标悬停在TextField上等等,但不允许检查它是否被悬停。
如何实现TextField的#isOver()方法?谢谢。

1
请查看此答案:https://dev59.com/s37aa4cB1Zd3GeqPv-Kl - p.streef
1个回答

3
您可以使用Actor类的hit()方法检查鼠标是否在扩展ActorTextField范围内。
要获取鼠标位置,您应该使用来自Gdx.inputgetX()getY()方法,然后通过使用screenToStageCoordinates()将它们转换为TextField的舞台坐标:
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
}

谢谢回复,但是每次我调用getStage时,它都返回null。我不知道为什么会这样? - Orange Receptacle
你可能没有将textField添加到舞台上(通过调用stage.addActor)。 - m.antkowicz
舞台的问题似乎已经解决了,但是预期的目的似乎没有实现。每当我检查textField是否命中mouseStagePosition时,它总是返回false。 - Orange Receptacle
看看我的修改 - 似乎你应该在舞台上调用 hit() 而不是演员。 - m.antkowicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接