java - 如何重置此缓冲图像的坐标或将此缓冲图像放在矩形中?
问题描述
我将这个“巨魔脸”作为我的敌人导入到我的代码中,从屏幕顶部到底部。但在这样做之前,我创建了粉红色的矩形,这样我就可以将巨魔的脸图像覆盖在矩形的顶部。但是,当我将图像的坐标设置为等于矩形时,您可以看到它没有居中。然后我将一张巨魔人脸图像的坐标设置为 (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 - BufferedReader 无法读取 Google Cloud Storage ReadChannel 上的所有行
- android - 在 Android 中响应耳机上的媒体按钮
- redirect - 如何将托管在同一服务器上的域重定向到另一个域的子页面
- excel - 与最近发生相对应的列出的 Product_ID 的 2 个最近费率
- flutter - 即使在 setState 调用之后,Gridview 也不会更新
- java - 如何将 JSONArray 转换为 Java 字符串数组
- javascript - 如何在使用 JavaScript 的移动过程中将移动替换为另一个移动?
- elasticsearch - 如何生成 gce 凭据
- arrays - 查询嵌套的子文档数组
- javascript - 如何根据javascript中的输入值更改背景框