我在LibGDX
中遇到以下问题。当您移出Actor
时,当您离开ClickListener
的边界框时,您会从Actor
和退出事件中获得enter事件。我保留了一个布尔mouseOver,它告诉我光标是否在这些事件的Actor
之上。但是当您单击Actor
并释放鼠标后,会发出退出事件。因此,在释放鼠标单击后,就好像光标不再位于Actor上,而它是。
如何为布尔mouseOver保持正确的状态?换句话说:如上所述,当我发生TouchUp事件时,如何知道鼠标是否在我的Actor上。
答案 0 :(得分:1)
你可以覆盖 touchUp 并在那里将布尔 mouseOver 设置为true。
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
...
mouseOver = true;
}
答案 1 :(得分:0)
到目前为止,我发现的最好的黑客是查看出口中的指针arg并输入覆盖并查看是否单击了鼠标。我仍在寻找更清洁的解决方案。
addListener(new ClickListener() {
@Override
public void enter(InputEvent event, float x, float y, int pointer,
Actor fromActor) {
mouseOver = pointer == -1 ? true : mouseOver;
super.enter(event, x, y, pointer, fromActor);
}
@Override
public void exit(InputEvent event, float x, float y, int pointer,
Actor toActor) {
mouseOver = pointer == -1 ? false : mouseOver;
super.exit(event, x, y, pointer, toActor);
}
}
答案 2 :(得分:0)
仅当退出的Actor toActor 不是您添加侦听器的actor时,才将 mouseOver 设置为false:
myActor.addListener(new ClickListener() {
...
@Override
public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
...
if (toActor != myActor) // and even myActor's children if it is a Group
mouseOver = false;
}
});