Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有多个小部件的LibGDX和ScrollPane_Java_Android_Libgdx - Fatal编程技术网

Java 具有多个小部件的LibGDX和ScrollPane

Java 具有多个小部件的LibGDX和ScrollPane,java,android,libgdx,Java,Android,Libgdx,尝试向滚动窗格添加多个项目时,我很快发现所有“addActor”函数都不受支持。所以,我添加了一个包含我想要的所有项目的表(这段代码遗漏了我仍然想要添加的一个图像),以创建一个可滚动的信用屏幕。。。但是这种方法(目前)不允许溢出,使滚动窗格变得无用。(我的文本只显示在屏幕高度允许的范围内,不可滚动)。 如何在LibGDX中创建包含多个小部件的可滚动窗格?(我现在只关心Android和Win/Lin/Mac平台 pane = new ScrollPane(null, skin);

尝试向滚动窗格添加多个项目时,我很快发现所有“addActor”函数都不受支持。所以,我添加了一个包含我想要的所有项目的表(这段代码遗漏了我仍然想要添加的一个图像),以创建一个可滚动的信用屏幕。。。但是这种方法(目前)不允许溢出,使滚动窗格变得无用。(我的文本只显示在屏幕高度允许的范围内,不可滚动)。 如何在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);

如果要将多个项目放入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() {}
}

编辑:添加了在滚动窗格内设置表格的代码。

这没有达到预期的效果。您正在将滚动条添加到表格中。滚动条仍然只有文本,表格中的其他项目没有滚动。好的,但这是正确的。ish:我是用“addActor”而不是正确的“add”添加到表格中的您也在使用它。您只需要反转addings:Table进入scroller内部,而不是相反。然后,我可能会将其标记为已接受。为了正确呈现和边界检查,表不具有
paneTable.setFillParent(true)是很重要的;
我更新了滚动监听器中多个小部件的代码。很抱歉,我错过了你问题的“关键”部分!愚蠢的我:(这很有效!非常感谢!…读者:请不要忘记调用
stage.act()
inside
void render()