如何在Java中获取形状对象的x坐标

如何在Java中获取形状对象的x坐标,java,shape,affinetransform,Java,Shape,Affinetransform,我想做一个简单的射击游戏。 我有一个包含IMG和Shape(这是该IMG的边界,所以我可以使用isIntersect方法)属性的平面类 然后我旋转和平移对象(使用仿射变换),然后我想得到它的坐标。有人能帮我吗 Ps:我尝试使用矩形而不是形状,但似乎无法使用CreateTransformedShape创建矩形对象 这是我的密码: public class EPlane { Shape l = new Rectangle(0,0,45,55); BufferedImage ep; private S

我想做一个简单的射击游戏。 我有一个包含IMG和Shape(这是该IMG的边界,所以我可以使用isIntersect方法)属性的平面类

然后我旋转和平移对象(使用仿射变换),然后我想得到它的坐标。有人能帮我吗

Ps:我尝试使用矩形而不是形状,但似乎无法使用CreateTransformedShape创建矩形对象

这是我的密码:

public class EPlane {
Shape l = new Rectangle(0,0,45,55);
BufferedImage ep;
private String imgFileName = "Eplane.PNG";
ArrayList<Rectangle> EShoot = new ArrayList();
int live;
AffineTransform at;
AffineTransform at2;
AffineTransform at3;
boolean Alrdy = false;

EPlane(){
    this.live = 5;
    at = new AffineTransform();
    at2 = new AffineTransform();
    at3 = new AffineTransform();
    URL imgUrl = getClass().getClassLoader().getResource(imgFileName);

        if (imgUrl == null) {
            System.err.println("couldn't find file: " + imgFileName);
        } else {
            try {
                ep = ImageIO.read(imgUrl);

            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
}
公共类EPlane{
形状l=新矩形(0,0,45,55);
缓冲图像ep;
私有字符串imgFileName=“Eplane.PNG”;
ArrayList EShoot=新的ArrayList();
int live;
仿射变换;
仿射型at2;
仿射型at3;
布尔Alrdy=false;
EPlane(){
这是1.live=5;
at=新仿射变换();
at2=新仿射变换();
at3=新仿射变换();
URL imgUrl=getClass().getClassLoader().getResource(imgFileName);
if(imgUrl==null){
System.err.println(“找不到文件:+imgFileName”);
}否则{
试一试{
ep=图像读取(imgUrl);
}捕获(IOEX异常){
例如printStackTrace();
}
}
}
以及想要找到x坐标的类

public class EPlaneCommander {

ArrayList<ArrayList<EPlane>> EPSList = new ArrayList();
int count = 0;
int count1 = 0;
int count2 = 0;

public EPlaneCommander() {
    ArrayList<EPlane> EPS = new ArrayList();
    ArrayList<EPlane> EPS1 = new ArrayList();
    ArrayList<EPlane> EPS2 = new ArrayList();
    EPSList.add(EPS);
    EPSList.add(EPS1);
    EPSList.add(EPS2);
}

public void move1() {
    if (count % 50 == 1 && EPSList.get(0).size() < 10) {

        EPSList.get(0).add(new EPlane());
    }

    for (int i = 0; i < EPSList.get(1).size(); i++) {
        if (!EPSList.get(0).get(i).Alrdy) {
            EPSList.get(0).get(i).at.translate(400, 0);
            EPSList.get(0).get(i).Alrdy = true;               
            EPSList.get(0).get(i).l = EPSList.get(0).get(i).at.createTransformedShape(EPSList.get(0).get(i).l);
            EPSList.get(0).get(i).at2.rotate(0.004, 0, 0);
        }

        //EPS.get(i).at2.rotate(0.0001, 0, 0);
        EPSList.get(0).get(i).l = EPSList.get(0).get(i).at2.createTransformedShape(EPSList.get(0).get(i).l);
        EPSList.get(0).get(i).at.rotate(0.004, -400, 0);
        Point s = (Point) EPSList.get(2).get(i).at.createTransformedShape(EPSList.get(0).get(i).l);
    }

    count++;
}
公共类EPlaneCommander{
ArrayList=新的ArrayList();
整数计数=0;
int count1=0;
int count2=0;
公共EPlaneCommander(){
ArrayList EPS=新的ArrayList();
ArrayList EPS1=新的ArrayList();
ArrayList EPS2=新的ArrayList();
EPSList.add(EPS);
EPSList.add(EPS1);
EPSList.add(EPS2);
}
公共图书馆1({
if(计数%50==1&&EPSList.get(0).size()<10){
获取(0).add(new EPlane());
}
for(int i=0;i
Java的
Shape
类具有一个可用于获取包含X和Y坐标的矩形对象的坐标。请记住,在Java图形中,这些坐标表示矩形的左上角,而不是典型笛卡尔坐标系中的左下角


该矩形也可以用作边界框,以便在玩家导弹图形的实现中进行碰撞检测,但形状已经有了一个
相交
方法,可以用作边界框。

变换形状周围的边界框将更大,并且在某些点上可能不准确。您可以将形状rt到区域中并检查交叉点

这是我在另一个答案中发现的。