Java 图形基础知识 : Creating Collison Area From Image

标签 java android image game-physics

我正在尝试获取图像的长度和宽度来为基本游戏创建碰撞检测区域。我希望最终将它移到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/

相关文章:

java - Java 中的 Unicode 感知 CSV 解析器

java - Spring测试+DBUnit无法加载数据集

Android UI 设计 : Supporting Multiple Screens

c++ - 使用 Magick++ 创建一个新图像

ios - 如何使用 Storyboard将图像缩放到不同的 iPhone 屏幕?

java - 带 SSL 的简单 RMI 服务器

android - JNI : pin count on array 0x. .. - 我需要担心什么吗?

java - 在 Android 中将一个 imageView 放在另一个的前面

java - BufferedImage 颜色 channel 蒙版

java - NiFi - 如何根据子元素的值获取特定的 DOM 元素