LibGDX滚动窗格禁用滚动x
我在libgdx中有一个滚动窗格。上下滚动已启用(使用触摸),我想用按钮左右滚动,但禁用触摸滚动LibGDX滚动窗格禁用滚动x,libgdx,scrollpane,Libgdx,Scrollpane,我在libgdx中有一个滚动窗格。上下滚动已启用(使用触摸),我想用按钮左右滚动,但禁用触摸滚动 'rightButton.addListener(new ChangeListener() { public void changed (ChangeListener.ChangeEvent event, Actor actor) { scrollPane.layout(); scrollPane.setScrollingDisabled(false, false); scrollPane.
'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();
}
}
谢谢你的回答,但我的问题还没有解决。我想禁用滚动滚动窗格通过触摸在X轴上滚动,并且只能通过按钮滚动它检查我的更新答案。您可以通过scrollpane.setFlickScroll(false)从滚动窗格中删除flickScrollListener;在那之后,它不会通过你的触摸滚动。是的,听起来不错,但是如果我是对的,它会禁用Y轴上的触摸滚动,有没有一种方法只会禁用X轴上的触摸滚动?