2013-08-30 2 views
8

Я читал о libgdx's scene2d features, включая элементы пользовательского интерфейса, но я не могу заставить их работать. Кажется, все они используют объект skin, как его создать?Использование scene2d.ui с libgdx: откуда берется скин?

Я прошел через nice tutorial, который создает простую игру libgdx, ловящую капли дождя в ведро, и я создал простую настольную игру, загрузив изображения texture atlas. Тем не менее, scene2d звучит как лучший способ контролировать движущиеся фигуры в приложении для настольных игр, а также любые кнопки и меню.

ответ

19

Чтобы загрузить скин, вы можете начать с файлов скинов образца, используемых в тестовом проекте libgdx.

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

Там немного более подробно в this question, и я обнаружил, что мне пришлось перенести файлы в подкаталог активов, чтобы избежать ошибка в версии HTML. (Если я оставляю файлы в папке с ресурсами, я вижу сообщение об ошибке вроде: «GwtApplication: exception: Ошибка чтения данных файла/uiskin.json.»)

Я разместил complete example, который отображает одну кнопку, и интересную код - все в game class. Пример настолько прост, что вам нужны только две переменные-члены, чтобы удерживать сцену и кнопку.

private Stage stage; 
private TextButton button; 

Для создания скина вы просто загружаете файл данных.

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

Провести кнопку на сцену.

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

Подключите слушателя к кнопке и зарегистрируйте этап для приема событий.

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

render() метод в основном призыв к 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(); 

Тогда вам просто нужно развернуть экран при изменении размера.

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

Если экран является более сложным, рассмотреть вопрос об использовании Table.

Если вы хотите использовать другой шрифт, вы можете сгенерировать файл шрифта и файл изображения с помощью Hiero. После того, как вы это сделали, вам придется взять новый шрифт и использовать TexturePacker, чтобы переупаковать его другим skin assets.

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

  • Нет связанных вопросов^_^