libGDX Scrollpane不滚动单个标签

时间:2015-05-31 14:31:53

标签: android libgdx scrollpane

我正在向使用libGDX创建的游戏添加"How to Play"指令。指令滚动只需要在屏幕的固定区域内显示,而不是全屏滚动。我已经创建了一个舞台,并添加了一些背景和其他演员,然后是一些标题,这些标签是标题(在卷轴之外)和指令文本(唯一需要滚动的标签)。它也不应该是水平滚动,只是垂直滚动。所以我设置了Label的宽度并包装了文本。总之,我需要完全控制卷轴的位置和大小,它不应该全屏。所以我编写了以下代码来添加指令滚动条:

private void addHelpContent()
{
    int width = (int) (0.85*alertBounds.width);
    int height = scrollStartY - scrollEndY;
    int x = Constants.APP_WIDTH/2 - width/2;

    BitmapFont font = Model.getInstance().createFont(Constants.ROCK_NORMAL_FONT_FILE_PATH, 20);
    Label.LabelStyle labelStyle = new Label.LabelStyle();
    labelStyle.font = font;
    labelStyle.fontColor = Color.valueOf("A07E10FF");
    Label label = new Label(getHelpString(), labelStyle);
    label.setWidth(width);
    label.setWrap(true);
    label.pack();
    label.setFillParent(true);
    ScrollPane scrollPane = new ScrollPane(label);
    scrollPane.setBounds(x, scrollEndY, width, height); //This should be the bounds of the scroller and the scrollable content need to be inside this
    scrollPane.layout();
    scrollPane.setTouchable(Touchable.enabled);
    addActor(scrollPane);
}

但现在我面临两个问题:

  1. 我无法滚动滚动窗格。标签在边界处被切断,使得Scrollpane无用。
  2. 除了标签之外的其他演员最初都不会出现,只有在我滚动滚动窗格后它才会出现(并且它不会滚动)。如果我注释掉代码以添加滚动窗格,则不存在此问题。所以我确信它与scrollpane本身有关。
  3. 有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

我忘了在舞台上添加act()方法。添加它解决了这个问题。

答案 1 :(得分:1)

滚动面板让它起作用有点棘手。根据我的理解,您无法设置滚动窗格的大小,因为它会自动调整大小与标签大小相同。

诀窍是将滚动窗格添加到表格中。然后,当标签的大小大于表的大小时,滚动窗格将允许标签在表中滚动。要确保它不会水平滚动,请将表格的宽度设置为与标签相同的宽度。您也不必设置滚动窗格的边界,让它自己调整为标签。

然后添加包含滚动窗格的表格,而不是添加滚动窗格。

addActor(table);