我有一個遊戲,在其中一個關卡中,羊可能被地雷炸燬。爆炸動畫是由一個png包含512x515 png文件中的4x4陣列爆炸圖像來控制的,參見下文。drawBitmap有問題 - 有源矩形和目標矩形
然後我用下面的代碼動畫爆炸:
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是一個矩形和explosion_dst_rect是RectF。 b2sx()和b2sy()是將「遊戲場」上羊的絕對座標轉換爲屏幕上的座標的函數 - 它僅僅添加一個偏移量。
該代碼可以在我嘗試過的幾款手機上完美工作,包括Nexus S和Galaxy S II。但是現在,一位朋友在三星Galaxy Tab 8.9上試用了這個代碼,發現這些爆炸似乎不合時宜。他送我這部分的截屏:
任何想法可能是什麼造成的?
您是否在較大的屏幕上使用了不同的位圖?另外,sheep_radius是如何定義的? – JRaymond
只有一組位圖。它們用於所有屏幕尺寸。 float sheep_radius是畫布寬度除以40. – Mick
如果您只對所有屏幕使用一組位圖,則應將其放置到res/drawable-nodpi文件夾中。然後android不會調整你的位圖。 – Nolesh