Основы Java Graphics: создание области Collison из изображения

Я пытаюсь получить длину и ширину изображения, чтобы создать зону обнаружения столкновений для базовой игры. Я надеюсь, в конце концов, переместить его на андроид, поэтому я избегаю использования класса BufferedImage (который, похоже, не имеет). Вместо этого я хочу прочитать.png из папки с ресурсами в моем проекте Eclipse и передать ее классу спрайтов. Все спрайты наследуются от 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)

}

Для спрайтов, которые я хочу иметь пользовательскую область столкновения, я могу вручную передать диаметры для HitBox(). В остальном, я хочу иметь возможность взять изображение и положение X и Y для верхнего левого угла и извлечь высоту и ширину изображения в переменные, чтобы определить hitbox. Я думаю, что это будет связано с использованием ImageObserver, но у меня возникли проблемы с пониманием того, как это сделать. Я надеюсь, что кто-то может помочь.

2 ответа

Я предлагаю вам написать интерфейс. Позволяет называть его ImageInterface. Теперь в интерфейсе изображения вы можете использовать все базовые изображения, такие как getWitdh(), getHeight(), getPixelValue(x,y), draw() и т.д. Используйте этот интерфейс во всем своем проекте. И реализовать его отдельно для cros-платформ. Вы можете использовать BufferedImage для Java и Bitmap для Android.


Я не уверен, что понимаю, что вы хотите, но если вы используете объекты 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();
</put></put></nameofimageinresources>

Или что вы ищете?

licensed under cc by-sa 3.0 with attribution.