如何使libGDX滚动窗格滚动而不先单击

问题描述

我的滚动窗格工作正常,但要使其滚动,首先需要单击它。即使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时应停止滚动。