我正在努力创造我的世界,我将所有 x 坐标都放在一个数组中,并且想使用 for 循环将其绘制到屏幕上。它可以容纳 27 个值,但是我的问题是我不知道用什么来填充其余参数。
public void paint(Graphics2D g2d){
for(int i = 0; i < blockPlacementX; i++){
g2d.drawImage(getBlockIMG(), , ,null); //img, x, y, null
}
}
全类
package com.questkings.game;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
public class MapLayout {
int[] blockPlacementX = {0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300,
330, 360, 390, 420, 450, 480, 510, 540, 570, 600, 630, 660, 690, 720,
750, 780, 810};
int[] blockPlacementY = { };
private Game game;
public MapLayout(Game game){
this.game=game;
}
//Map size 800(x), 400(y)
public void paint(Graphics2D g2d){
for(int i = 0; i < blockPlacementX; i++){
g2d.drawImage(getBlockIMG());
}
}
public Image getBlockIMG(){
ImageIcon ic = new ImageIcon("C:/Users/AncientPandas/Desktop/QuestKings/Misc/Images/Sprites/grassWall.png");
return ic.getImage();
}
public Rectangle getBoundsBlock(){
return new Rectangle(0, 345, 810, 1);
}
}
所以我尝试了,但是它画得很快然后就消失了。有什么想法吗?
public void paint(Graphics2D g2d){
for(int i = 0; i < blockPlacementX[27]; i++){
g2d.drawImage(getBlockIMG(), blockPlacementX[0]++, blockPlacementY [0], null);
}
}
最佳答案
如果我错了,请纠正我,但您是否尝试使用预定义的坐标数组沿 x 轴平铺给定的一组(或一组)图像。
如果您有两个 X 和 Y 坐标数组(长度相等),则对数组进行简单迭代即可实现如下所示的效果:
public void paint(Graphics2D g2d){
for(int i = 0; i < blockPlacementX.length; i++){
g2d.drawImage(getBlockIMG(), blockPlacementX[i], blockPlacementY[i], null);
}
}
如果您只有一个 Y 坐标,则只需将 blockPlacementY[i]
替换为包含 Y 坐标的变量即可。
如果 X 和 Y 坐标数组的长度不同,则需要弄清楚如何根据某些规则集为每个图像分配坐标。
关于java - 在 for 循环中绘制图像 x 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27154121/