首页 > 解决方案 > 如何重置此缓冲图像的坐标或将此缓冲图像放在矩形中?

问题描述

我将这个“巨魔脸”作为我的敌人导入到我的代码中,从屏幕顶部到底部。但在这样做之前,我创建了粉红色的矩形,这样我就可以将巨魔的脸图像覆盖在矩形的顶部。但是,当我将图像的坐标设置为等于矩形时,您可以看到它没有居中。然后我将一张巨魔人脸图像的坐标设置为 (0,0),您可以看到它明显远离原点。

我尝试导入不同的 PNG 图像,但徒劳无功,它不起作用。

import java.util.LinkedList;
import java.util.concurrent.TimeUnit;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
public class magazinerain extends GameDriverV4{
    LinkedList<rainingenemies> r = new LinkedList<rainingenemies>();
    rainingenemies variable;
    BufferedImage trollface;

    public magazinerain() {
        trollface = this.addImage("minion.png");
    }
    public void faller(Graphics2D win) {
        for (int i = 0; i<r.size(); i++) {
            variable=r.get(i);
            variable.fall(win);
            if (variable.getY()>=800) {
                delete(variable);
            }

        }
    }

    public void draw(Graphics2D win) {
        int count = 0;
        win.drawImage(trollface, 0, 0,null);
        for (int i = 0; i < r.size(); i++) {
            variable = r.get(i);
            variable.fall(win);
            //win.drawImage(trollface, (int) variable.getX(), (int) variable.getY(),null);
            //the images are not correctly centered on the screen
            //win.drawImage(trollface, 400, 400,null);
        }
    }
    public void memorymanagement() {
        for (int i = 0; i < r.size(); i++) {
            variable = r.get(i);
            //System.out.println(variable.getY());
            if (variable.getY()>=800) {
                r.remove(i);
                //System.out.println("Removed");
            }

        }
    }

    public void checkintersects(int a, int b) {
        int buffer = 10;
        int buffery = 15;
        for (int i = 0; i< r.size(); i++) {
            variable  = r.get(i);
            //if (a>(variable.getX()-buffer) && (a<variable.getX()+buffer)) {
            if ((variable.getX()>a-buffer-10)&& (variable.getX()<a+buffer+30)) {
                //if ((b>variable.getY()-buffery) && (b<variable.getX()+buffery)) {
                if ((variable.getY()>b-buffery) && (variable.getY()<b+buffery)){
                    r.remove(i);
                    System.out.println("spacex="+a+"getx="+variable.getX());
                    System.out.println("spacey="+b+"gety="+variable.getY());

                }
            }

        }
    }

    public void delete(rainingenemies a) {
        r.remove(a);
    }
    public void insert(rainingenemies a) {
        r.add(a);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}

特别是在这段代码中,我预计巨魔的脸在 (0,0) 但它不存在,如屏幕截图所示

在此处输入图像描述

标签: java

解决方案


推荐阅读