【发布时间】:2016-07-06 18:58:27
【问题描述】:
我将 960x960 的 spritesheet 作为 png 存储在我的 Libgdx android 资产中。在我指定初始化用于我的游戏的精灵的类中,我试图让它从精灵表中切割出一个 120x120 的精灵(因此数组中应该有 64 个项目)。我怎么能做到这一点?这是我在类似情况下尝试过的:
public static Texture spritesheet;
public static Sprite[] textures = new Sprite[64];
...
//inside method that gets called once to initialize variables
spritesheet = new Texture(
Gdx.app.getType() == Application.ApplicationType.Android ?
"...Spritesheet.png" :
"android/assets/...Spritesheet.png"
);
spritesheet.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
for (int x = 0; x < 64; x ++) {
textures[x] = new Sprite(spritesheet, x, (x%8), 64, 64);
textures[x].flip(false, true);
}
然后我用这个在其他类中渲染精灵:
batch.draw(Assets.textures[0 /*this can be any number*/], (float) x, (float) y, 108, 108);
当我这样做时,它的行为真的很奇怪。它说数组中填充了元素,但仍然存在数组索引超出范围异常或精灵只是疯狂渲染。总的来说,它没有成功。我想要做的是让它,这样我就不必分别初始化 64 个不同的精灵,然后我可以通过更改渲染精灵时输入的索引来轻松更改精灵,这样我以后可以做一些其他的事情开,像动画一样。我该怎么做?
【问题讨论】:
标签: java android arrays libgdx sprite-sheet