2013-08-30 8 views
8

Przeczytałem o libgdx's scene2d features, w tym elementy interfejsu użytkownika, ale nie mogę ich uruchomić. Wszyscy wydają się używać obiektu skóry, jak go utworzyć?Używanie programu scene2d.ui z libgdx: skąd pochodzi skórka?

Przeszedłem przez nice tutorial, który tworzy prostą grę libgdx łapiąc krople deszczu w wiadrze, a ja stworzyłem prostą grę planszową, ładując obrazy z texture atlas. Jednak scene2d brzmi jak lepszy sposób kontrolowania poruszających się elementów w grze planszowej, a także przycisków i menu.

Odpowiedz

19

Aby załadować skórkę, można rozpocząć od przykładowych plików karnacji użytych w projekcie testowym libgdx.

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

Jest nieco bardziej szczegółowo w this question i znalazłem, że muszę przenieść pliki do podkatalogu aktywów, aby uniknąć błąd w wersji HTML. (Jeśli zostawiam pliki w folderze zasobów, pojawi się komunikat o błędzie, taki jak "GwtApplication: wyjątek: błąd odczytu danych pliku/uiskin.json.")

Wysłałem complete example, który wyświetla jeden przycisk, a interesujący kod znajduje się w game class. Przykład jest tak prosty, że potrzebne są tylko dwie zmienne składowe do przechowywania sceny i przycisku.

private Stage stage; 
private TextButton button; 

Aby utworzyć skórkę, wystarczy załadować plik danych.

Skin skin = new Skin(Gdx.files.internal("data/uiskin.json")); 

Podłącz przycisk do sceny.

stage = new Stage(); 
button = new TextButton("Click Me!", skin); 
stage.addActor(button); 

drutu słuchacza do przycisku i zarejestrować scenę aby otrzymywać wydarzenia.

button.addListener(new ClickListener() { 
    @Override 
    public void clicked(InputEvent event, float x, float y) { 
     button.setText("Clicked!"); 
    } 
}); 
Gdx.input.setInputProcessor(stage); 

Sposób render() jest zasadniczo wezwaniem do stage.draw().

Gdx.gl.glClearColor(1, 1, 1, 1); 
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1/30f)); 
stage.draw(); 

Następnie wystarczy zmienić układ ekranu podczas zmiany rozmiaru.

button.setPosition(
     (width-button.getWidth())/2, 
     (height-button.getHeight())/2); 

Jeśli twój ekran jest bardziej skomplikowany, rozważ użycie Table.

Jeśli chcesz użyć innej czcionki, możesz wygenerować plik czcionki i plik obrazu za pomocą Hiero. Gdy to zrobisz, będziesz musiał pobrać nowy obraz czcionki i użyć TexturePacker, aby zapakować go ponownie z innym skin assets.

Powiązane problemy