2013-04-24 22 views
37

Śledziłem to: https://code.google.com/p/table-layout/#Quickstart, aby uzyskać małe wprowadzenie do tabel w LibGDX. Już trochę eksperymentowałem z przyciskami.Domyślna skórka LibGDX?

Teraz mam ten kod:

Label introLabel = new Label("Skip Intro", skin); 
    TextField introText = new TextField("", skin); 

    table.add(introLabel); 
    table.add(introText).width(100); 
    table.row(); 

Ale to rzuca mi NullPointerException ponieważ: No com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle registered with name: default

ja tylko dodaje moje przyciski (z innego miejsca na ekranie) w głąb skóry:

atlas = new TextureAtlas("assets/gui/buttons/alpha_generic_buttons.pack"); 

    skin = new Skin(); 
    skin.addRegions(atlas); 

Moje pytanie brzmi teraz, jakiego rodzaju tekstury potrzebuje stół, a przede wszystkim, w jaki sposób używam ich ze stołem.

Odpowiedz

79

Jeśli chodzi o interfejs użytkownika w libGDX, okaże się, że jest on bardzo różny od tego, który byłby używany wcześniej (yaml, json, xml, UI Builders itp.).

Układ tabeli - W ten sposób interfejs użytkownika Scene2d ma strukturę i format. Podany link jest świetnym samouczkiem, ale jak już wiesz, potrzebujesz skóry do robienia większości rzeczy.

Skóra LibGDX - składa się z 3 elementów, obrazu w opakowaniu tekstury, pliku z pakietem tekstur i zestawu Json do konfiguracji stylów. Można je również generować programowo, tak jak robisz, ale o wiele łatwiej jest po prostu załadować je z pliku i użyć. Jeśli chcesz dowiedzieć się więcej o tym, jak tworzyć skórki lub edytować je, itp., Kliknij ten link: Skins.

Teraz wróć do wyjątku, który otrzymujesz. Dzieje się tak dlatego, że utworzona przez Ciebie skórka nie zawiera jsona do opisu stylów różnych elementów interfejsu użytkownika. W przypadku powyższego wyjątku etykieta w polu tekstowym nie ma stylu domyślnego.

Co można zrobić, to po prostu użyć szablonu dostarczonego w folderze testy:

  1. Atlaspack File
  2. Json File
  3. Atlaspack Image
  4. Font Image
  5. Font File

Umieść te pliki w folderze zasobów projektu android. A następnie można łatwo załadować skórę z jednej linii kodu:

Skin uiSkin = new Skin(Gdx.files.internal("uiskin.json")); 

będzie to miało brakujący kawałek informacji, aby Państwa obiekt TextField, a także kilka innych stylów domyślnych:

com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: { 
    default: { font: default-font, fontColor: white }, 
} 

Mam nadzieję, że to pomoże Ci zacząć. Istnieje wiele innych drobiazgów, więc nie bój się przejrzeć artykułu Scene2d.UI na wiki, aby uzyskać więcej informacji.

Uwaga: Można użyć gdx-tools artefakt, aby móc korzystać z the default UI skin out-of-the-box (może być bardzo przydatne dla bardzo małych/prostych zastosowań, do debugowania, gdy jesteś w prawdziwym pośpiechu Widać interfejs użytkownika, itp.).

+0

Wow, dziękuję za wspaniałą odpowiedź :) Jedyne, czego nie mogę tak naprawdę owinąć wokół głowy, to, czym jest ten ostatni fragment kodu? : o – AreusAstarte

+4

@AreusAstarte to json opis stylu, patrz pozycja 2 na liście plików powyżej – noncom

+1

noncom jest poprawne, właśnie wskazałem tę linię json, ponieważ jest to dokładnie ta, która była przyczyną problemów :) – Jyro117