我有一个游戏,在其中一个关卡中,羊会被地雷炸毁。爆炸动画是通过在一个 512x515 png 文件中包含一个 4x4 爆炸图像数组的 png 来控制的……见下文。
然后我使用以下代码为爆炸设置动画:
exp_bitmap_number_to_draw = (int)(time_since_death / 100);
if (exp_bitmap_number_to_draw < 16)
{
explosion_dst_rect.left = b2sx(sheep_x[i]) - sheep_radius * 5;
explosion_dst_rect.right = b2sx(sheep_x[i]) + sheep_radius * 5;
explosion_dst_rect.bottom = b2sy(sheep_y[i]) + sheep_radius * 5;
explosion_dst_rect.top = b2sy(sheep_y[i]) - sheep_radius * 5;
explosion_src_rect.left = 128 * (exp_bitmap_number_to_draw % 4);
explosion_src_rect.top = 128 * (exp_bitmap_number_to_draw / 4);
explosion_src_rect.right = explosion_src_rect.left + 128;
explosion_src_rect.bottom = explosion_src_rect.top + 128;
canvas.drawBitmap(explosion_bitmap, explosion_src_rect, explosion_dst_rect, null);
}
其中explosion_src_rect 是一个Rect,explosion_dst_rect 是一个RectF。b2sx() 和 b2sy() 是从“运动场”上绵羊的绝对坐标转换为屏幕坐标的函数——它只是添加了一个偏移量。
该代码在我尝试过的几部手机上都能完美运行,包括 nexus S 和 Galaxy S II。但刚才有朋友在三星galaxy tab 8.9上试了代码,发现爆炸显得很傻。他给我发了这个部分截屏:
知道是什么原因造成的吗?