如何使 libGDX 滚动窗格在不先单击的情况下滚动

How to make a libGDX scrollpane scroll without clicking on it first

我的滚动窗格工作正常,但要使其滚动,首先需要单击它。即使 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, float x, float y, int pointer, Actor toActor) {
                getStage().setScrollFocus(null);
            }
        });
    }
}

这应该使 ScrollPane 在鼠标接触到 actor 时立即滚动,并且在鼠标离开时停止滚动。