如何获取 Sprite Sheet 中精灵的大小?

3

我的问题是如何获取雪碧图中的一个精灵。

    public class Blocks extends Sprite{
        public Blocks() throws IOException
            {
                super(Image.createImage("/blockSprite.png"),20,30);
            }
    }        

"blockSprite.png包含Sprites的图像,多个Sprites在同一张图片中。"
"问题在于使用这行代码时,我应该如何获取图像中Sprite的大小/尺寸?"
"Sprite表格:
宽度- 162
高度- 280"
"我想知道表格中Sprites的宽度/高度?如何确定Sprite表格中Sprites的宽度/高度?"

你能否重新措辞你的问题?我不太清楚你在寻找什么。对我来说,看起来你知道纹理/精灵表的宽度和高度以及精灵的宽度/高度?你是在寻找一个框架的位置吗?还是在寻找表中的帧数? - Mario
抱歉。我想知道精灵表中精灵的宽度/高度是多少?以及如何确定 Sprite Sheet 中精灵的宽度/高度。 - Christian Eric Paran
查找了Sprite类,这里使用的构造函数显然是Sprite(Image image, int frameWidth, int frameHeight),这表明第二个和第三个参数是您的精灵大小?这是我困惑的部分。如果这不是您要寻找的内容,请尝试添加一些示例代码以演示您缺少某些值或希望放置它的位置。请考虑您必须命名行/列数或帧的宽度/高度之一。您必须定义其中之一。 - Mario
精灵的大小只是精灵的不正确大小。我这里有一些示例项目,使用相同的Sprite类,但不是相同的Sprite表。例如:super(Image.createImage("/kirby.png"),32,48);。我想要为帧命名宽度/高度。 - Christian Eric Paran
2
那是你必须基于你的精灵表图像来确定的事情。你不能凭空计算它。你很可能需要在代码中硬编码这些值或者在某个文件中定义它们。 - Mario
显示剩余3条评论
2个回答

4

您知道每行和每列中有多少个精灵吗?只需将宽度除以列中有多少个精灵,将高度除以行中有多少个精灵即可。

(如果第一次尝试不起作用,您应该只是交换行/列)


1
一种方法是使用图像编辑软件(比如免费的GIMP)。您需要做的是:
- 在GIMP中打开图像 - 单击矩形选择工具(或按r键),鼠标将变成十字线 - 现在当您单击图像时,在工具箱中,在工具选项下,您将看到所单击点的X-Y位置 - 很酷,现在在您要选择的精灵周围绘制一个矩形。在执行此操作之前放大图像,以便实际选择整个精灵。 - 现在,您将获得所绘制矩形左上角的X-Y坐标以及图像的高度和宽度。
之后,只需使用https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Using_images#Slicing即可。
玩得开心!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接