我正在尝试使用 LibGDX 创建一个简单的游戏。我正在尝试使用 9 个补丁图像作为菜单上按钮的背景,但是看起来图像的 9 个补丁质量被忽略了。
我有两个图像,“active.9.png”和“rest.9.png”。这些是代表按钮处于活动或静止状态的方形图像。我使用这个工具来创建它们:http ://romannurik.github.io/AndroidAssetStudio/nine-patches.html所以我确信它们满足 9 Patch 要求。下面是“active.9.png”的图片:
因为我使用的是 LibGDX,所以会有很多资产我想使用 TextureAtlas 来存储我的按钮图像。运行 TexturePacker 之后,一切似乎仍然有效,因为图像已定义“拆分”,我认为这表明它们已被识别为 9 个补丁文件。下面是“buttons.pack”:
buttons.png
format: RGBA8888
filter: Nearest,Nearest
repeat: none
active
rotate: false
xy: 1, 1
size: 226, 225
split: 59, 57, 58, 58
orig: 226, 225
offset: 0, 0
index: -1
rest
rotate: false
xy: 229, 1
size: 226, 225
split: 59, 57, 58, 58
orig: 226, 225
offset: 0, 0
index: -1
接下来我尝试从这个包中创建一个 TextureAtlas,创建一个皮肤,并将图像加载到皮肤中。
TextureAtlas buttonAtlas = new TextureAtlas("images/buttons/buttons.pack");
skin = new Skin();
skin.addRegions(buttonAtlas);
skin.add("rest", buttonAtlas.createPatch("rest"));
skin.add("active", buttonAtlas.createPatch("active"));
最后我尝试将此皮肤应用于按钮。我尝试了两种不同的方法..
方法一:
TextButtonStyle buttonStyle = new TextButtonStyle();
buttonStyle.up = new NinePatchDrawable(buttonAtlas.createPatch("rest"));
buttonStyle.down = new NinePatchDrawable(buttonAtlas.createPatch("active"));
输出 1:
方法二:
TextButtonStyle buttonStyle = new TextButtonStyle();
buttonStyle.up = new NinePatchDrawable(new NinePatch(new Texture(Gdx.files.internal("images/buttons/rest.9.png"))));
buttonStyle.down = new NinePatchDrawable(new NinePatch(new Texture(Gdx.files.internal("images/buttons/active.9.png"))));
输出 2:
虽然输出 2 看起来更好,但实际上似乎忽略了 9 个补丁质量,并且图像已被简单地拉伸以适应。
我真的很感谢任何帮助,我完全被难住了,似乎没有任何最新的教程或文档可用。
谢谢你的时间