libgdx TextureAtlas和NinePatch的

时间:2013-03-25 03:59:23

标签: libgdx nine-patch

我正在使用libgdx制作一个简单的游戏。我有一个我正在尝试使用的九个补丁的TextureAtlas:9patch I wanna use

图像保存为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 (我手工制作,我从来没有实际使用9patch,而且它没有船只,因为我没有费心去编辑那些)

1 个答案:

答案 0 :(得分: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使其更明确。 (我的印象是这不是必要的,但也许是......)