如何从具有不同精灵大小的精灵表中获取子图像?

时间:2015-06-09 01:15:54

标签: java image animation sprite

我正在用Java做一场格斗游戏,我在动画方面遇到了一些麻烦。

当玩家闲置或行走时,我没有问题,因为每个精灵都有固定的宽度(50px),但是当玩家攻击时,精灵会变得更宽,只要打击更进一步。在游戏中,精灵无法正确绘制。

PS:我将每个帧/精灵保存在一个arraylist中,我会根据精灵的数量手动更改MAXFRAMES。 /[ ]|<div><br><\/div>|<span[ ]style='white-space:pre'>[ ]<\/span>|<br>/是spritesheet。

我正在使用如下的getSubImage方法。

SS

SpriteSheet示例:

example

任何想法?或者解决方案是暴力加载吗?

1 个答案:

答案 0 :(得分:0)

由MadProgrammer提取,您可以手动设置工作表中每个精灵的大小。 由于高度始终相同,因此您可以简单地使用一个数组,其大小与工作表上的精灵数量相同,并且只在其中放入精灵宽度。

为了帮助您,您可以在手动设置如下值之前进行循环:

float cellWidths[MAX_FRAMES/CELLNUMBER];
for(int i=0; i<MAX_FRAMES/CELLNUMBER;i++){
    cellWidths[i] = CELLWIDTH;
}
//set non default values manually.

然后你只需要像这样改变你:

for(int i = 1; i < MAXFRAMES; i++) {
    subtmp = tmp.getSubimage((cellWidths[i-1] * i) + k - cellWidths[i-1], 1, cellWidths[i-1], CELLHEIGHT);            
    this.animation_idle_right.add(subtmp);
    k++;
}

但我可能误解了MAX_FRAMES的意思。