我正在尝试获取图像的长度和宽度来为基本游戏创建碰撞检测区域。我希望最终将它移到android上,所以我避免使用BufferedImage类(android似乎没有)。相反,我想从 Eclipse 项目中的 asset 文件夹中读取 .png,并将其传递给 sprite 类。所有 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,但我在理解如何做到这一点时遇到了一些困难。希望有人能帮忙。
最佳答案
我建议你写一个接口(interface)。我们称之为ImageInterface。现在,在图像界面中,您可以拥有所有与图像相关的基本内容,例如 getWitdh()
、getHeight()
、getPixelValue(x,y)
、draw()
等。在您的所有项目中使用该接口(interface)。并针对跨平台单独实现。对于 java,您可以使用 BufferedImage
;对于 Android,您可以使用 Bitmap
。
关于Java 图形基础知识 : Creating Collison Area From Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23579396/