我想在我的2D游戏中添加一个简单的2D图像(.png格式)。我的游戏包括一个扩展表面视图的游戏视图类,一个控制游戏逻辑的GameState类,并绘制画布和主要活动。我的GameState类有这个方法:
// the draw method
public void draw(Canvas canvas, Paint paint) {
// Clear the screen
canvas.drawRGB(20, 20, 20);
// set the colour
paint.setARGB(200, 0, 200, 0);
// // draw the bats
// canvas.drawRect(new Rect(_bottomBatX, _bottomBatY, _bottomBatX
// + _batLength, _bottomBatY + _batHeight), paint); // bottom bat
}
它负责绘制游戏中的所有对象。我可以轻松地绘制一个矩形。但我无法弄清楚如何将图像绘制到我的游戏中。我计划动态移动图像(像精灵一样)。
如何在上述方法中绘制精灵?
我不能这样做:
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
因为GameState不会扩展View
谢谢
答案 0 :(得分:3)
一个简单的解决方案就是。
然后您需要调用AssetManager来获取资产文件夹中的资产
Bitmap yourImage;
AssetManager assetManager = context.getAssets();
获取图片的字节流
InputStream inputStream;
inputStream = assetManager.open("yourImage.png");
// path is relative to the assets folder
让BitmapFactory完成解码工作并将其存储到Bitmap类型的yourImage变量
yourImage = BitmapFactory.decodeStream(inputStream);
inputStream.close();
然后你需要在canvas对象中调用一个方法
canvas.drawBitmap(bitmap, x, y, paint);
该方法的参数是: 位图要绘制的位图 x正在绘制位图左侧的位置 y正在绘制位图顶部的位置 paint用于绘制位图的绘制(通常为null)
实施例:
canvas.drawBitmap(yourImage, 100, 100, null);