之前我使用简单的Texture
来制作基于精灵的动画,但这并没有为不具备2的力量的图像提供支持。TexturePacker提供了加载所有图像的能力一次,然后从imageatlas
获取所需的图像。
那就是说,我跟随了Libgdx维基的一些教程,它一直运行到装载部分。但我认为在渲染过程中,它会导致一些问题。这就是我将图像加载到桌面项目中texturepacker
的方式:
private static final String INPUT_DIR = "../Drop-Android/assets/images";
private static final String OUTPUT_DIR = "../Drop-Android/assets/image-atlases";
private static final String PACK_FILE = "pages-info";
public static void main(String[] args){
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
cfg.title = "Drop";
cfg.width = 800;
cfg.height = 480;
Settings settings = new Settings();
settings.maxWidth = 512;
settings.maxHeight = 512;
TexturePacker2.process(settings, INPUT_DIR, OUTPUT_DIR, PACK_FILE);
new LwjglApplication(new Drop(), cfg);
}
问题:我是否必须在images-atlases文件夹中手动创建pages-info
,即PACK_FILE
?如果我不这样做,它会抛出File not found exception
。
我碰巧在pages-info
文件夹中创建了image-atlases
文件,并生成了以下文件:pages-info.png
和'pages-info.atlas'。虽然pages-info
文件为空,但.png
和.atlas
文件分别包含图像和JSON图像数据。
这是我用来从textureregions
文件(空的)中提取pages-info
的原因:
TextureAtlas ta = new TextureAtlas(Gdx.files.internal("image-atlases/pages-info"));
imageOneRegion = ta.findRegion("image1.png");
imageTwoRegion = ta.findRegion("image2.png");
正如预期的那样,在绘制nullpointerexception
时会返回textureregion
。我在这里没有想法,任何帮助和想法?
答案 0 :(得分:2)
如果使用Texturepacker生成静态图像地图集,它还会生成必要的信息页面。 (libgdx wiki),它类似于packName.atlas(从命令行尝试)
java -cp gdx.jar;extensions/gdx-tools/gdx-tools.jar com.badlogic.gdx.tools.imagepacker.TexturePacker2 inputDir [outputDir] [packFileName]
如果要加载图像,您应该只加载atlas文件,它不应该是json文件,而是自定义文件格式。
TextureAtlas ta = new TextureAtlas(Gdx.files.internal("image-atlases/<yourAtlasName>.atlas"));
然后你可以通过文件名引用png而不用postfix。