【发布时间】:2011-12-17 00:55:26
【问题描述】:
我正在尝试学习如何在 android 中制作动画精灵,但不知道如何组织我的位图。我有一个我的角色向右走的精灵表:一个角色的五个副本的位图,等距(每 45 像素),在一个行走周期中。
我计划通过一次绘制精灵表位图的一小部分来绘制每一帧:
Rect sourceRect = new Rect(0, 0, 45, 75);
canvas.drawBitmap(spriteSheetBitmap, sourceRect, new Rect(0, 0, 45, 75), null);
然后对于下一帧,将“sourceRect.x”增加 45,然后重绘等等。
但是,我现在不确定如何让我的精灵向左移动。我最初以为我可以镜像我正在绘制的矩形以获得翻转的图片。比如:
sourceRect = new Rect(45, 0, 0, 75);
这似乎不起作用(不确定这里实际发生了什么,但没有任何东西被吸引到我的表面)。
在网上搜索,看来我应该复制我的原始位图,用变换矩阵对其进行镜像,然后在向左行走时使用该位图进行绘图。然而,我也发现了许多较小的位图对象从原始精灵表中创建、存储(并为镜像运动进行转换)然后根据需要使用的实现。
所以我想知道在这种情况下什么是最好的,或者是否真的有任何区别(性能/内存):
方法一:加载我原来的精灵表,创建一个新的位图实例,镜像它,然后计算所有的矩形并使用那些+两个完整的表来绘制(诚然有一些未使用精灵表的额外位图空间)。
方法 2: 加载到我的原始精灵表中,为每一帧创建一个新的两个位图对象(1 个镜像,1 个正常)并存储它们以供绘制。
方法3:其他更好的方法?
【问题讨论】: