我在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。
答案 0 :(得分:1)
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();
}
}