use*_*803 3 android skin libgdx texturepacker
我正在尝试使用 LibGDX 创建一个简单的游戏。我正在尝试使用 9 个补丁图像作为菜单上按钮的背景,但是似乎忽略了图像的 9 个补丁质量。
我有两个图像,“active.9.png”和“rest.9.png”。这些是代表按钮处于活动或静止状态的方形图像。我使用这个工具来创建它们:http : //romannurik.github.io/AndroidAssetStudio/nine-patches.html所以我确信它们满足 9 个补丁要求。下面是“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
Run Code Online (Sandbox Code Playgroud)
接下来我尝试从这个包创建一个 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"));
Run Code Online (Sandbox Code Playgroud)
最后我试着把这个皮肤应用到按钮上。我试过两种不同的方法..
方法一:
TextButtonStyle buttonStyle = new TextButtonStyle();
buttonStyle.up = new NinePatchDrawable(buttonAtlas.createPatch("rest"));
buttonStyle.down = new NinePatchDrawable(buttonAtlas.createPatch("active"));
Run Code Online (Sandbox Code Playgroud)
输出 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"))));
Run Code Online (Sandbox Code Playgroud)
输出 2:

虽然输出 2 看起来更好,但实际上似乎忽略了 9 个补丁质量,并且图像只是被拉伸以适应。
我真的很感激这方面的任何帮助,我完全被难住了,似乎没有任何最新的教程或文档可用。
谢谢你的时间
我认为错误之一是图像线。
我用的是draw9patch,不知道是不是你用的工具,不知道。此工具可以在以下位置找到: yourAndroid-sdk/tools/-->draw9patch "lookVertical Path" 例如:

//变量类:
private TextureAtlas buttonsAtlas;
private NinePatch buttonUpNine;
private TextButtonStyle textButtonStyle;
private TextButton textButton;
private BitmapFont font;
Run Code Online (Sandbox Code Playgroud)
//在 Show 中添加或创建,例如:
buttonsAtlas = new TextureAtlas("data/ninePatch9/atlasUiScreenOverflow.atlas");
buttonUpNine = buttonsAtlas.createPatch("buttonUp");
font = new BitmapFont(); //** default font, for test**//
font.setColor(0, 0, 1, 1); //** blue font **//
font.setScale(2); //** 2 times size **//
textButtonStyle = new TextButtonStyle();
textButtonStyle.up = new NinePatchDrawable(buttonUpNine);
textButtonStyle.font = font;
textButton = new TextButton("test", textButtonStyle);
textButton.setBounds(100, 250, 250, 250);
Run Code Online (Sandbox Code Playgroud)
添加阶段例如:
yourStage.addActor(textButton);
Run Code Online (Sandbox Code Playgroud)
//
例如:如果你的按钮大于或等于ninePath的边,看起来像这样:(对不起我的英语希望你能理解我)
textButton.setBounds(100, 250, 250, 250);
看起来不错。
但如果它少于 9 行,例如 100,请看:
textButton.setBounds(100, 150, 250, 100);
如果您需要,则用于测试的资产:
//atlasUiScreenOverflow.atlas
atlasUiScreenOverflow.png
size: 232,231
format: RGBA8888
filter: Nearest,Nearest
repeat: none
buttonUp
rotate: false
xy: 2, 2
size: 230, 229
split: 49, 51, 49, 52
orig: 230, 229
offset: 0, 0
index: -1
Run Code Online (Sandbox Code Playgroud)
//atlasUiScreenOverflow.png

有几种使用 NinePatch 的方法,但这是我现在想到的一种方法,我希望很好理解,并且可以帮助您。
编辑:我刚刚测试了您使用的工具并且运行良好。
你用textButton = new TextButton("test", textButtonStyle);?
| 归档时间: |
|
| 查看次数: |
1772 次 |
| 最近记录: |