2015-09-17 3 views
0

Я сделал таблицу уровней в libgdx, используя панель прокрутки. здесь существуют разные таблицы с определенным уровнем на определенной панели прокрутки. Есть ли способ предустановить конкретную таблицу, которая будет первой, которую я вижу, потому что было бы глупо, если бы у меня было более 50 уровней, и я должен прокрутить их все, чтобы перейти на определенный уровень в конце.Libgdx scene2dui размер столбца вопрос

Краткие сведения о моих таблицах и прокрутках.

У меня есть arraylist таблицы, называемой таблицей столбцов, которая используется для хранения разных деталей уровня в разных столбцах. то эта таблица столбцов добавляется в другую таблицу, которая называется levleTable.

Таблица уровней добавлена ​​в scrollpane, которая добавляется в основную таблицу.

public void setScrollPane() { 
    scrollPane = new ScrollPane(levelTable, getScrollPaneStyle()); 
    // scrollPane = new ScrollPane(levelTable, skin); 
    //scrollPane.setFlickScroll(true); 
    scrollPane.setFadeScrollBars(false); 
    scrollPane.setScrollingDisabled(false, true); 
    scrollPane.setScrollX(300); 
    scrollPane.updateVisualScroll(); 
    //scrollPane.setSmoothScrolling(true); 
    mainTable.add(scrollPane).expand(); 
} 

и constructor`

mainTable = new Table(); 
    mainTable.setFillParent(true); 
    levelTable = new Table(); 
    setScrollPane(); 
    columnTable = new ArrayList<Table>(); 
    levelSelectionButton = new ArrayList<TextButton>(); 
    makeLevelMenu(); 

    //adding main table to stage 
    stage.addActor(mainTable);` 

ответ

0

компаний по лучшей идее (при использовании механизма, как это) я, чтобы прокрутить ScrollPane автоматически на текущий объект (который может быть таблицей с вашим следующим уровнем например).

Вы можете легко достигнуть его с помощью:

scrollPane.setScrollY(y); 

где у должен быть

y = (total height of scroll Pane content) - ((desired element Y position inside scrollPane) - (element height)) 

Я имею в виду, что если содержание ScrollPane имеет 100px высоту и есть 5 элементов каждый с высотой 20px, то прокрутка до третьего:

y = 100 - (3 * 20px - 20px) = 100 - 40px = 60px 

То же самое будет работать, если ваша scrollPane расположены горизонтально - нужно просто использовать scrollPane.setScrollX (х) и вычисляет всю ее ширину, вместо высоты

ОБНОВЛЕНИЕ: перед использованием setScrollX/setScrollY вы должны вызвать .layout() метод на ScrollPane


пример:

@Override 
    public void show() 
    { 
     //creating stage and viewport 
     viewport = new FillViewport(1280, 800); 
     stage = new Stage(viewport); 

     Gdx.input.setInputProcessor(stage); 

     //creating levelTable 
     Table levelTable = new Table(); 
     levelTable.setSize(2000, 500); 

     //filling levelTable with fake actors (it can be labels of your levels numbers) 
     for(int i = 0; i < 100; i++) 
     { 
      Actor a = new Actor(); 
      a.setSize(80, 200); 

      //set debug to see the outline 
      a.debug(); 

      levelTable.add(a).pad(150, 10, 150, 10); 
     } 

     //set debug to see the outline 
     levelTable.debug(); 

     //defining scroll 
     ScrollPane scrollPane = new ScrollPane(levelTable, skin); 

     scrollPane.setSize(800, 600); //your custom size 
     scrollPane.setPosition(50, 50); //your custom position 

     scrollPane.setFadeScrollBars(false); 
     scrollPane.setScrollingDisabled(false, true); 

     //important!! you have to call it before setScrollX 
     scrollPane.layout(); //that's the thing! 

     //the number of column you want to go to 
     int numberOfColumn = 10; 

     //now move to column no numberOfColumn 
     scrollPane.setScrollX(levelTable.getWidth() - (levelTable.getColumns() - numberOfColumn - 1) * 100); //100, because column width is 100 - actor = 80 + 2 * 10 pad 

     //set debug to see the outline 
     scrollPane.debug(); 

     this.stage.addActor(scrollPane); 
    } 
+0

хорошо, позвольте мне дать ему попробовать !! – uday

+0

Есть ли способ полностью получить ширину содержимого, извините, что я не упоминал об этом раньше, но мой стол устроен горизонтально. – uday

+0

ладно, спасибо !! Позвольте мне посмотреть – uday

Смежные вопросы