0

我在 Photoshop 中构建了一个动画图像,其中包含 12 帧/图像。所以我试图让这个绘图函数遍历文件中的前 4 个图像。图片的宽度是1340像素。所以实际上第一行每340像素就有一个新的帧。有 3 行。整个图像分辨率为1330x1998。所以如果我写

new Rectangle(_animationFrame * 0, 0, 3100, 3900)

所以现在它显示所有图片中的第一张图片。因此,如果我将animationFrame 增加一个,它不会转到下一张图片。啊我在这里失败了什么?

编辑:

我让它像这样工作

int[] x = { 0, -780, -1560, -2332 };


protected override void Draw(GameTime gameTime)        {
        GraphicsDevice.Clear(Color.CornflowerBlue);
        _spriteBatch.Begin();
_spriteBatch.Draw(_radarTexture, new Rectangle(x[i], 0, 3100, 3900), Color.White);
        _spriteBatch.End();
        base.Draw(gameTime);
}

更新函数将增加 x 数组中的值以通过帧。当您尝试测试正确的比例和 x/y 坐标以使其正确时,这是荒谬的浪费时间。必须有更简单的方法,但无法得到它......

编辑 2 好的,我想我明白了。当我单击打开选项时,Photoshop 显示为厘米,而不是像素坐标。谢谢大家帮忙。我会将第一个答案标记为正确,因为现在在这种情况下它是正确答案。谢谢

4

1 回答 1

1

也许你想做的是:

new Rectangle(_animationFrame * 340, ...)

因为正如您所写的,“每 340 像素中有一个新帧”。
正如评论所说,你现在正在做的是将一个数字乘以 0,这是没有用的。

编辑

我的理解是,您想绘制精灵表的前 4 张图像,每张图像的宽度为 340。我想它们的高度是 1998/3,因为您的精灵表中有 3 行。
所以,这是你的代码(_animationFrame从 0 开始):

new Rectangle(_animationFrame * 340, 0, 430, 1998 / 3);
_animationFrame++;
if (_animationFrame == 4)
  _animationFrame = 0;
于 2013-09-26T00:52:01.480 回答