首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LibGDX滚动窗格禁用滚动x

LibGDX滚动窗格禁用滚动x
EN

Stack Overflow用户
提问于 2017-03-04 06:07:14
回答 1查看 1K关注 0票数 0

我在libgdx中有一个滚动窗格。向上和向下滚动被启用(触摸),我想用一个按钮向左和向右滚动,但禁用触摸滚动。

代码语言:javascript
复制
'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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-04 13:46:42

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

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

代码语言:javascript
复制
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();
    }
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42589265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档