0

我有一些我正在开发的游戏的 1 行精灵表。我只在文件夹中提供它们drawable-xhdpi,我让操作系统在其他密度上为我调整大小。

这种方法会出现以下问题:

我有一个1750宽度精灵表(xhdpi宽度),包含5状态。所以每个单独的精灵都有宽度1750 / 5 = 350。开启hdpi时,它会调整大小1313,因此每个单独的精灵都有宽度1313 / 5 = 262.6。但是,这实际上是262,因为 android 不允许您在其中使用浮点数,所以Rect您必须sourcedrawBitmap.

这样做的问题是我无法正确提取单个精灵:绘制它们时,每个连续的精灵都会向右移动一点,这是我不想要的。有没有办法解决这个问题?我试过了,如果我手动调整它们的大小并在1315中提供这个调整大小的版本,它会起作用drawable-hdpi,但这会大大增加 APK 的大小,我不想这样做。

注意 1:每个单独的精灵在每一侧都被很多透明度包围(两边的数量相同)。我可以承受失去这种透明度的一两个像素,我只是不能让中间的不透明部分移位。

注 2:这不仅发生在xhdpi -> hdpi. 调整到其他密度等级时,同样的问题仍然存在。解决方案必须是通用的:对于任何调整大小系数(或至少6/8,4/83/8),对于任何宽度和任何数量的单个精灵。

为了更好地了解问题,假设这是需要绘制(自动调整大小的精灵)的空间:

| _ _ _ _ _ _ _ _ _ _ |

这是第一帧的绘制方式(取自0 * 262 to 0 + 262精灵表,*代表我关心的非透明部分):

| _ _ _ _ * * _ _ _ _ |

这是第二帧的绘制方式(取自1 * 262 to 262 + 262精灵表):

| _ _ _ _ _ & & _ _ _ |

什么时候应该:

| _ _ _ _ & & _ _ _ _ |

对于每个连续的帧,依此类推(至少我认为每个连续的帧。效果在实际设备上不太明显,但它就在那里)。

4

1 回答 1

0

即使您手动调整精灵表的大小,您也会遇到这个问题。最简单的方法是为每个构建生成正确大小的精灵表(或者它不存在)。您需要将 spritesheet 的每一帧作为单独的、正确居中且尺寸尽可能大的图像文件。

现在,您可以使用ImageMagick 的 CLI了。使用 shell 脚本

  1. 将每个大图像调整为精灵表所需的高度(缩放宽度以保持纵横比)
  2. 使用Montage命令生成您的精灵表。请注意,巧妙编写的脚本甚至可以生成矩形精灵表。

现在应该没有问题了。:) 希望这可以帮助。

于 2012-06-08T21:08:44.783 回答