Java图形基础:从图像创建Collison区域

时间:2014-05-10 09:31:25

标签: java android image game-physics

我正在尝试获取图像的长度和宽度,以便为基本游戏创建碰撞检测区域。我希望最终把它移到android上,所以我避免使用BufferedImage类(android似乎没有)。相反,我想从Eclipse项目中的assets文件夹中读取.png,并将其交给精灵类。所有sprite都将继承自ASprite(),它包含一个HitBox()类:

import java.awt.Image;
import java.awt.image.ImageObserver;


public class HitBox {

    private int TopLeftX;
    private int TopLeftY;
    private int Width;
    private int Length;

    public void createManually(int topx, int topy, int width, int length){
        TopLeftX = topx;
        TopLeftY = topy;
        Width = width;
        Length = length;
    }

    public void createFromImage(Image i, int topx, int topy){
          //TODO...
    }

   //Various getting and setting functions, & testIntersect(HitBox h1)

}

对于我希望有自定义碰撞区域的Sprite,我可以手动传入HitBox()的直径。对于其余部分,我希望能够接收图像以及左上角的X和Y位置,并将图像的高度和宽度提取到变量中以定义命中框。我认为它将涉及使用ImageObserver,但我在理解如何操作方面遇到了一些麻烦。我希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解你想要什么,但如果你说使用Bitmap对象来保存你的图像,你可以简单地得到像这样的W / H图像:

// Load an image from the drawable folder.
Bitmap tempBitmap = BitmapFactory.decodeResource(myContext.getResources(), R.drawable.<nameofimageinresources>);
// get w and h of it and put it in vars.
<put it in some vars> = tempBitmap.getWidth();
<put it in some vars> = tempBitmap.getHeight();

或者你在寻找什么?

答案 1 :(得分:1)

我建议你编写一个接口。我们称之为ImageInterface。现在,在图片界面中,您可以使用所有与基本图像相关的内容,例如getWitdh()getHeight()getPixelValue(x,y)draw()等。在您的所有项目中使用该界面。并单独为cros平台实现它。您可以将BufferedImage用于java,将Bitmap用于Android。