2013-03-25 2 views
3

Я делаю простую игру, используя libgdx. У меня есть текстурный атлас, который имеет I ninepatch Я пытаюсь использовать: 9patch I wanna uselibgdx TextureAtlas и NinePatch

Изображение сохраняется как menu.9.png

Я использую следующий код:

Image bg = new Image(Room.iAtlas.findRegion("GUI/menu")); 
bg.setBounds(guix-border,guiy-border,(border+radius)*2,(border+radius)*2); 
batch.begin(); 
    bg.draw(s,1); 
batch.end(); 

Выходной сигнал как это:
enter image description here

Я просто понятия не имею, что я не делаю неправильно, но оно должно быть больше, как это (за исключением она будет иметь форму наверху, но я не добавил их):
enter image description here (Я создал это вручную, у меня никогда не было 9-патча, и у него нет кораблей, потому что я не удосужился отредактировать те, которые находятся в)

ответ

2

Похоже, что ваш «девятый патч» не рассматривается как настоящий девятый путь и рассматривается как «вырожденный» девятый патч (у меня была очень похожая проблема раньше: Loading nine-patch image as a Libgdx Scene2d Button background looks awful, хотя я не использовал TextureAtlas, который должен быть решением.)

В принципе, когда Libgdx читает девятипакет из вашего атласа, он должен читать все метаданные, которые описывают, как разорвать изображение вверх в 9 плиток (см. https://code.google.com/p/libgdx/wiki/TexturePacker#NinePatches). Я вижу пару мест, это может пойти не так:

  1. Ваша текстура не является допустимым девятью патчами, а метаданные игнорируются. (Обратитесь к инструменту Android draw9patch.)
  2. Ваш пакет текстур не обрабатывает файл .9.png правильно. Проверьте содержимое файла .txt для своего атласа и посмотрите, есть ли у него «разделенные» записи, связанные с записью «menu.9.png».
  3. Текстурный поиск просто возвращает обычную обертку TextureRegion для области с девятью патчами и не обертывает ее в объект NinePatch. Попробуйте использовать TextureRegion.createNinePatch, чтобы сделать это более явным. (У меня создается впечатление, что это необязательно, но, возможно, это ...)
+3

Спасибо за помощь, я просмотрю этот материал. Раньше я пробовал TextureAtlas.createPatch (String name), который должен «получить первый NinePatch с этим именем». – csga5000

+2

@ csga5000 вы должны поместить свой комментарий в качестве действительного ответа, это сработало для меня. Благодаря! –

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