【问题标题】:How to get the size of sprite in a sprite "Sheet"?如何在精灵“表格”中获取精灵的大小?
【发布时间】:2012-01-29 09:38:02
【问题描述】:

我的问题是在 Sprite “Sheet”中获取 Sprite。

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

“blockSprite.png 包含 Sprite 的图像,一张图像中有许多 sprite”

这里的问题是使用这行代码,我应该如何获取图像中的 Sprite 大小/尺寸?

精灵表:
宽度 - 162
身高 - 280

我想知道工作表中精灵的宽度/高度?以及如何确定 Sprite Sheet 中精灵的宽度/高度?

【问题讨论】:

  • 你能改写你的问题吗?目前还不清楚你在寻找什么。在我看来,您似乎知道纹理/精灵表的宽度和高度以及精灵的宽度/高度?您在寻找框架的位置吗?还是工作表中的帧数?
  • 对此感到抱歉。好吧,我想知道工作表中精灵的宽度/高度?以及如何确定精灵表中精灵的宽度/高度。
  • 查了Sprite类,这里使用的构造函数明显是Sprite(Image image, int frameWidth, int frameHeight),也就是说第二个和第三个参数是你的精灵大小?这就是我感到困惑的部分。如果这不是您要查找的内容,请尝试添加一些示例代码来演示您缺少某些值的位置或您想要放置它的位置。请考虑您必须命名行数/列数或框架的宽度/高度。你已经定义了一个或另一个。
  • 精灵尺寸 只是精灵尺寸不正确。我这里有示例项目,它们使用相同的 Sprite 类但不是相同的 Sprite 表。例如:super(Image.createImage("/kirby.png"),32,48); 。我想命名框架的宽度/高度。
  • 嗯,这是你必须基于你的精灵表图像的东西。你不能“凭空”计算它。您很可能必须对这些值进行硬编码或在某个文件中定义它们。

标签: java-me sprite midp lcdui


【解决方案1】:

你知道每一行每一列有多少精灵吗?然后只需将宽度除以一列中有多少精灵,然后将高度除以一行中有多少精灵。

(我可能会弄错列和行,我不是英语母语,但如果第一次尝试没有成功,你应该切换行/列)

【讨论】:

    【解决方案2】:

    一种方法是使用图像编辑软件(比如 GIMP,它是免费的)。 你要做的是,

    • 在 GIMP 中打开图像
      • 单击矩形选择工具(或按 r),您的鼠标会变成十字准线
      • 现在,当您单击图像时,在工具箱中的工具选项下,您将看到所单击点的 X-Y 位置
      • 酷,现在在你想要的精灵周围画一个矩形。在你这样做之前放大,这样你实际上是在选择整个 精灵。
      • 现在您将获得所绘制矩形左上角的 X-Y 坐标以及图像的高度和宽度。

    之后,只需使用https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Using_images#Slicing

    玩得开心!

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多