Панель прокрутки libGDX не прокручивается для одной метки

Я добавляю "How to Play" инструкции в игру, которую создал с помощью libGDX. Прокрутка инструкций должна отображаться только в фиксированной области экрана, а не в виде полноэкранной прокрутки. Я создал сцену и добавил немного фона и других актеров, а затем несколько меток, которые представляют собой заголовок (вне скроллера) и текст инструкций (единственное, что нужно прокручивать). Он также не должен прокручиваться по горизонтали, только по вертикали. Поэтому я установил ширину метки и обернул текст. Короче говоря, мне нужен полный контроль над положением и размером скроллера, он не должен быть полноэкранным. Поэтому я написал следующий код, чтобы добавить скроллер инструкций:

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. Я не могу прокручивать панель прокрутки. Метка обрезана прямо по краям, что делает панель прокрутки бесполезной.
  2. Другие актеры, кроме меток, сначала не появляются, они появятся только после того, как я прокрутлю панель прокрутки (а она не будет прокручиваться). Этой проблемы не будет, если я прокомментирую код, чтобы добавить панель прокрутки. Поэтому я уверен, что это связано с самой панелью прокрутки.

Кто-нибудь может помочь мне решить эту проблему?


person Harikrishnan    schedule 31.05.2015    source источник


Ответы (2)


Я просто забыл добавить метод act() в класс сцены. Добавление решило проблему.

person Harikrishnan    schedule 26.10.2015

Панель прокрутки немного сложна, чтобы заставить ее работать. Насколько я понимаю, вы не можете установить размер области прокрутки, так как она автоматически будет иметь тот же размер, что и метка.

Хитрость заключается в том, чтобы добавить область прокрутки к таблице. Затем, когда размер метки больше размера таблицы, панель прокрутки позволит метке прокручиваться внутри таблицы. Чтобы убедиться, что он не прокручивается по горизонтали, установите ширину таблицы равной ширине метки. Вам также не нужно устанавливать границы области прокрутки, пусть она сама по размеру соответствует метке.

Затем вместо добавления области прокрутки добавьте таблицу, содержащую область прокрутки.

addActor(table);
person Tekkerue    schedule 31.05.2015