gen*_*ray 7 java button clicklistener libgdx overlap2d
我目前正在尝试实现一个 clickListener。我发现了一个很棒的运行时工具,它叫做 Overlap2D,在那里我制作了一些漂亮的按钮并加载它们,一切都工作正常。因为我想为我的按钮制作“悬停”效果,所以我使用了 ClickListener 和方法进入和退出,它看起来是这样的:
@Override
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor){
playButton.setLayerVisibility("MouseOver", true);
playButton.setLayerVisibility("pressed", false);
playButton.setLayerVisibility("normal", false);
System.out.println("Actor enter : "+fromActor);
}
@Override
public void exit(InputEvent event, float x, float y, int pointer, Actor toActor){
playButton.setLayerVisibility("MouseOver", false);
playButton.setLayerVisibility("pressed", false);
playButton.setLayerVisibility("normal", true);
System.out.println("Actor exit : "+toActor);
}
@Override
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button){
System.out.println("touchdown");
return true;
}
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button){
System.out.println("touchup");
}
Run Code Online (Sandbox Code Playgroud)
这就是问题所在,当我按下或向上按钮时,触地和触地被调用一次。但是在 touchdown 和 touchupo 事件 Oo 期间也会调用进入和退出方法,如下所示:
touchdown
Actor enter : null
Actor exit : Image
Actor enter : Image
touchup
Actor exit : Image
Actor exit : Image
Actor enter : Image
Actor exit : Image
Actor enter : Image
Run Code Online (Sandbox Code Playgroud)
我也打印了 fromActor 和 toActor 来进行调试 ^^ 而且我仍然不知道为什么它会如此频繁地触发退出和进入事件......有人知道吗?
谢谢 :)
您需要检查pointer
传递到enter
和exit
方法中的 。如果pointer
是-1
,则鼠标光标刚刚开始或停止悬停在角色的边界上。如果pointer
不是-1
,则演员刚刚收到单击按下或单击释放(分别为enter
和exit
)。
因此,如果将光标移到按钮上并单击然后移开,您将获得两个enter
事件和两个exit
事件。
另外,使用 ClickListener 时,请确保在重写方法时调用超级方法,这样它才能正常运行!
归档时间: |
|
查看次数: |
1189 次 |
最近记录: |