2015-05-31 2 views
1

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

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

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

ответ

2

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

1

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

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

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

addActor(table); 
Смежные вопросы