【问题标题】:Libgdx How would I go about checking if a mouse is hovering over a TextField?Libgdx 我将如何检查鼠标是否悬停在 TextField 上?
【发布时间】:2016-02-18 02:41:32
【问题描述】:

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

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

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

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

【问题讨论】:

标签: java events libgdx


【解决方案1】:

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

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

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。不知道为什么会这样?
  • 我猜你可能没有将 textField 添加到 Stage(通过调用 stage.addActor
  • 舞台的问题似乎已经解决,但是,预期的目的似乎不起作用。当我检查 textField 是否击中 mouseStagePosition 时,它总是返回 false。
  • 查看我的编辑 - 似乎你应该在舞台上打电话给 hit() 而不是演员
猜你喜欢
  • 2020-11-25
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多