【问题标题】:Android sprite moves when it is supposed to be stationaryAndroid精灵在它应该静止时移动
【发布时间】:2011-11-28 05:39:52
【问题描述】:
我创建了一个 18 帧长的精灵,它应该是静止的并通过帧运行并循环动画,但是当它运行时它会在屏幕上缓慢移动,直到它到达最后一帧然后猛拉回到原来应该停留的位置。
我不知道它这样做的原因,并试图让它变得更小和更大的尺寸,在某些尺寸下它不会移动,但只是像它应该做的那样动画。
如果有人对为什么会发生这种情况以及如何阻止它移动并保持在应该的位置有一个答案,将不胜感激。
我只为精灵使用了 1 行,我使用 gimp 创建了精灵并将其保存为 png。
【问题讨论】:
标签:
android
android-animation
sprite
sprite-sheet
【解决方案1】:
代码很长,所以我没有添加它,但它基于本教程
aquarium live wallpaper tutorial
我想我找到了答案,我将 png sprite 放在我创建的名为 drawable 的文件夹中,我将所有图像放在那里,我又试了一次,但这次将 sprite 放在其他文件夹中并没有移动,我尝试缩放精灵也让它变得有点不稳定,我希望使用缩放来代替所有屏幕的大小,这适用于普通图像但对于精灵它会导致一些问题,也许我会尝试使用 drawable-large-mdpi 文件夹中的最大尺寸,看看它是否会导致任何问题。
我会用这种方法更新并让你知道。
最好只有一张图像并根据屏幕尺寸对其进行缩放。
好的,我终于找到了答案,它可能会帮助那些创建精灵的人,划分为数量帧时的宽度必须是一个整数,因为测量值是 int 而不是浮点数或双精度数,所以它会移动,因为当帧得到将它分成一个分数,而不是导致它移动(我猜)无论浮动额外测量是什么。
示例:如果精灵是 100 像素高和 1082 像素宽,并且我有 15 帧,那么每帧的宽度将为每帧 72.133333333 像素宽,这会导致错误将图像移动额外的长度,同时保持动画看起来不错。现在,如果它是 1080 像素宽,那么每帧将是 72 像素宽,一个不错的整数,然后会完美地制作动画。
因此,对于那些创建自己的精灵的人来说,确保当帧被分割时宽度等于一个整数(我的问题是我正在创建一个缩小它的图像而不是检查每个帧的宽度,所以通常只有一个图像大小有效,有时我很幸运得到了两个,我应该弄清楚这一点,因为它都在 int 而不是 float 中运行以测量宽度。
希望这有助于其他人制作精灵。
山姆