鼠标悬停 - libgdx

6

在libgdx中是否有监听器可以让我仅检测鼠标悬停而非按下。在2D场景的按钮类中,有两个方法isOver和isPressed,但它们做的事情是一样的...还有其他人遇到这个问题吗?是否有另一种方法可以检测鼠标悬停在演员上?

1个回答

14

有一个ClickListener,可以附加到一个Actor上,它提供以下事件:

public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor)
public void exit(InputEvent event, float x, float y, int pointer, Actor toActor)

enter事件基本上意味着鼠标开始悬停在演员上,exit表示它“离开”了演员区域。它还有一个clicked事件,您可以使用它来执行一些操作。


你必须为每个函数单独添加一个新的点击监听器并将其添加到演员中,还是可以将所有函数合并成一个并添加到演员中?无论如何,我都尝试了这两种方法,但进入和退出似乎都不起作用... - Andrew
你可以创建一个自己的 HoverListener extends ClickListener 并覆盖两个方法。然后使用 actor.addListener(new HoverListener()) 添加监听器。 - noone
1
对我来说,这样做可以解决问题。别忘了在你的渲染方法中使用 stage.act() - noone
好的,现在我懂了。我忘记了stage.act()。我创建了自己的类并且重写了方法,但是因为缺少了stage.act()它并不起作用。感谢您提供的信息。 - Andrew
1
在更多编码后,我遇到了另一个问题。当我点击按钮而没有移动鼠标时,退出方法被激活。我不知道为什么会发生这种情况... - Andrew
如果点击释放鼠标输出,则可以验证“指针”是否等于-1。 - otaviodecampos

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