在Android中将图像添加到2D游戏中?

时间:2014-02-23 12:01:20

标签: java android canvas

我想在我的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

谢谢

1 个答案:

答案 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);