2017-03-03 112 views
0

我在libgdx中有一个滚动窗格。向上和向下滚动已启用(通过触摸),并且我想用一个按钮将它滚动到左侧和右侧,但禁用通过触摸进行滚动。LibGDX滚动窗格禁用滚动x

'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.

回答

0

scrollTo()超载的ScrollPane方法,您可以使用此方法并滚动你的窗格中指定的偏移量。在Listener的方法中调用这个方法。

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

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(); 
    } 
} 
+0

谢谢你的回答,但我的问题仍然存在。我想通过触摸禁用滚动滚动X轴上的滚动窗口,它应该只能通过按钮滚动 – Aduci

+0

检查我更新的答案。您可以通过scrollPane.setFlickScroll(false)从您的滚动窗格中删除flickScrollListener;之后它不会通过你的触摸滚动。 – Aryan

+0

是的,它很好,但如果我是正确的,它通过触摸在Y轴上禁用滚动,有没有一种方法只能触摸X轴上的触摸滚动? – Aduci