问题描述
我的滚动窗格工作正常,但要使其滚动,首先需要单击它。即使libGDX应用程序本身已聚焦,它也不会滚动,直到我单击它。
我不是要使其自动滚动。我只是认为,当用户专注于应用程序并且该用户与可以滚动的UI元素进行交互时,他们希望仅通过使用鼠标上的滚轮即可滚动它,而无需再次单击该元素。>
解决方法
您可以添加一个侦听器,以在鼠标进入或退出ScrollPane
时更改焦点。您甚至可以将其放入自定义子类中,从而不必在任何地方重复它:
public class AutoFocusScrollPane extends ScrollPane {
public AutoFocusScrollPane() {
super(null);
addListener(new InputListener() {
public void enter(InputEvent event,float x,float y,int pointer,Actor fromActor) {
getStage().setScrollFocus(AutoFocusScrollPane.this);
}
public void exit(InputEvent event,Actor toActor) {
getStage().setScrollFocus(null);
}
});
}
}
这应该使ScrollPane
一旦鼠标接触到actor即可滚动,并且在鼠标离开actor时应停止滚动。