尝试将多个项目添加到滚动窗格我很快发现所有“addActor”功能都不受支持。所以,我去添加一个包含我想要的所有项目的表(这段代码错过了我仍想添加的图片)来制作一个可滚动的积分屏幕......但是这种方法(当前)不允许溢出,渲染ScrollPane无用。 (我的文字只显示屏幕的高度允许,并且不可滚动)。 在LibGDX中制作包含多个小部件的可滚动窗格的方法是什么? (目前我只关心Android和Win / Lin / Mac平台。
pane = new ScrollPane(null, skin);
pane.setFillParent(true);
paneContent = new Table(skin);
paneContent.setFillParent(true);
Label temp = new Label("", skin);
temp.setAlignment(Align.left, Align.center);
temp.setText( Gdx.files.internal("licenses/credits.txt").readString("UTF-8") );
paneContent.addActor(temp);
pane.setWidget(paneContent);
stage.addActor(pane);
答案 0 :(得分:19)
如果您想将多个项目放入ScrollPane,您只需要在其中放入一个表格,并为要放入ScrollPane的每个小部件调用add()。
以下是如何使您的积分可滚动的示例:
public class ScrollTest implements ApplicationListener {
private Stage stage;
private static final String reallyLongString = "This\nIs\nA\nReally\nLong\nString\nThat\nHas\nLots\nOf\nLines\nAnd\nRepeats.\n"
+ "This\nIs\nA\nReally\nLong\nString\nThat\nHas\nLots\nOf\nLines\nAnd\nRepeats.\n"
+ "This\nIs\nA\nReally\nLong\nString\nThat\nHas\nLots\nOf\nLines\nAnd\nRepeats.\n";
@Override public void create() {
this.stage = new Stage();
Gdx.input.setInputProcessor(this.stage);
final Skin skin = new Skin(Gdx.files.internal("skin/uiskin.json"));
final Label text = new Label(reallyLongString, skin);
text.setAlignment(Align.center);
text.setWrap(true);
final Label text2 = new Label("This is a short string!", skin);
text2.setAlignment(Align.center);
text2.setWrap(true);
final Label text3 = new Label(reallyLongString, skin);
text3.setAlignment(Align.center);
text3.setWrap(true);
final Table scrollTable = new Table();
scrollTable.add(text);
scrollTable.row();
scrollTable.add(text2);
scrollTable.row();
scrollTable.add(text3);
final ScrollPane scroller = new ScrollPane(scrollTable);
final Table table = new Table();
table.setFillParent(true);
table.add(scroller).fill().expand();
this.stage.addActor(table);
}
@Override public void render() {
this.stage.act();
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
this.stage.draw();
}
@Override public void resize(final int width, final int height) {}
@Override public void pause() {}
@Override public void resume() {}
@Override public void dispose() {}
}
编辑:添加了有关在ScrollPane中设置表格的代码。