LibGDX 滚动窗格禁用滚动 x

LibGDX scrollpane disable scrolling x

我在 libgdx 中有一个滚动窗格。上下滚动已启用(触摸),我想通过按钮将其左右滚动,但禁用触摸滚动。

'rightButton.addListener(new ChangeListener() {
 public void changed (ChangeListener.ChangeEvent event, Actor actor) {
 scrollPane.layout();
 scrollPane.setScrollingDisabled(false, false);
 scrollPane.setScrollX(scrollPane.getMaxX());
 scrollPane.setScrollingDisabled(false, false);
 scrolled = true;
 }
 });
'

这是我的 RightButton 侦听器,但它不会滚动 X。

scrollTo()ScrollPane 的重载方法,您可以使用此方法将窗格滚动到指定的偏移量。在您的侦听器方法中调用此方法。

我已经测试过了,你可以测试我的代码。

public class MyGdxGame extends ApplicationAdapter {

    Texture img;
    Stage stage;
    ScrollPane scrollPane;
    Group group;

    @Override
    public void create () {

        img = new Texture("badlogic.jpg");
        stage=new Stage();
        Gdx.input.setInputProcessor(stage);

        final float w=Gdx.graphics.getWidth();
        final float h=Gdx.graphics.getHeight();

        group=new Group();
        group.setSize(2*w,h);
        scrollPane=new ScrollPane(group);
        scrollPane.setSize(w,h);
        scrollPane.setFlickScroll(false);

        stage.addActor(scrollPane);

        Image image1=new Image(img);
        image1.setPosition(w*.5f, h/2f);
        image1.setScale(.5f);
        group.addActor(image1);

        Image image2=new Image(img);
        image2.setPosition(w*.75f, h/3f);
        image2.setScale(.5f);
        group.addActor(image2);

        stage.addListener(new ClickListener(){

            @Override
            public void clicked(InputEvent event, float x, float y) {

                float offsetPositionX=w*.5f;
                float offsetPositionY=0;

                scrollPane.scrollTo(offsetPositionX,offsetPositionY,w,h);

                super.clicked(event, x, y);
            }
        });
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.act();
        stage.draw();
    }

    @Override
    public void dispose () {
        img.dispose();
        stage.dispose();
    }
}