[LibGDX] System scen i drag and drop

Scene2d jest dobrym narzędziem do tworzenia GUI takiego jak Menu Główne, Menu Opcji, Mapy Przygody czy Sklepu. W jego skład wchodzą takie elementy jak Stage - które jest głównym rodzicem dla wszystkich komponentów. Niżej w hierarchi mamy rodzinę Layoutów:

Table - do ogólnego przeznaczenia. W praktyce używam ją raczej jako główny stół do grupowania pozostałych elementów.

HorizontalGroup, VerticalGroup - do grupowania poziomego lub pionowego.

A także przydatny ScrollPane - do menu przewijanego. Oraz Container do pozycjonowania pojedynczych widgetów.

Dalej mamy Layouty wyspecjalizowane np.:
Tree - do tworzenia drzew. Czyli kompozycji rozwijanych.
SplitPane - do dzielenia przestrzeni pomiędzy dwóch aktorów.

oraz layouty pomocnicze jak ScrollPane - do przesuwania komponentów.

Na niższym poziomie znajdują się widgety czyli wszelkiego rodzaju kontrolki jak Button, Image, CheckBox.

Niektóre widgety takie jak Window służą podobnie jak layouty do obsadzania w nich innych kontrolek.

Żeby wykorzystać pełen potencjał layoutów. Wszelkich aktorów do dodania należy dodawać poprzez metodę .add(actor). Dzięki temu zwracana jest nam komórka którą możemy pod wieloma względami pozycjonować. np.:


dropRow = new HorizontalGroup(); scrollDropRow = new ScrollPane(dropRow); table.add(scrollDropRow).expand().center();




Pozwala na wycentrowanie naszego layouta na środek ekranu.
Polecenie expand() rozszerza nasz komponent na maksymalną szerokość i wysokość jaką może osiągnąć. Czyli jak bardzo może się rozepchać, zostawiając innym minimalne miejsce istnienia.
Natomiast center pozwala ustawić przesunięcie na środek.

Ciekawym narzędziem przy tworzeniu menusów jest system DragAndDrop oferowany przez klasę narzędziową scene2d.
Najprościej rzecz ujmując jego działanie polega na przypisaniu aktorów jako Source(elementy które można przesuwać) oraz Target(elementy na które można przesuwać). Dzięki temu dostajemy elastyczny system do tworzenia dowolnej funkcjonalności na podstawie systemu DragAndDrop.