Java 补强后退出比赛
我在Java 补强后退出比赛,java,libgdx,Java,Libgdx,我在LibGDX中遇到以下问题。当您移动到一个Actor上时,您将从ClickListener中获得enter事件,当您移出Actor的边界框时,将获得exit事件。我保留一个布尔鼠标盖,告诉我光标是否在带有这些事件的参与者上。但是,当您单击Actor并释放鼠标后,会出现一个退出事件。因此,在释放鼠标点击后,就好像光标不再位于演员上方,而它是 如何保持布尔鼠标盖的正确状态?换言之:在上面的场景中,当发生触碰事件时,我如何知道鼠标是否在我的演员身上。您可以覆盖触碰,并将布尔值鼠标悬停设置为true
LibGDX
中遇到以下问题。当您移动到一个Actor
上时,您将从ClickListener
中获得enter事件,当您移出Actor
的边界框时,将获得exit事件。我保留一个布尔鼠标盖,告诉我光标是否在带有这些事件的参与者上。但是,当您单击Actor
并释放鼠标后,会出现一个退出事件。因此,在释放鼠标点击后,就好像光标不再位于演员上方,而它是
如何保持布尔鼠标盖的正确状态?换言之:在上面的场景中,当发生触碰事件时,我如何知道鼠标是否在我的演员身上。您可以覆盖触碰,并将布尔值鼠标悬停设置为true
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
...
mouseOver = true;
}
到目前为止,我发现最好的方法是查看出口中的指针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);
}
}
仅当退出的参与者不是您添加侦听器的参与者时,才将鼠标悬停设置为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;
}
});
这不起作用,因为在修补事件之后立即调用退出事件。在退出事件中,我将mouseOver设置为false。