我创建了一个名为Tile的类,通过给它一个图像,x posit。,y posit。,width,height和graphic object来向屏幕渲染图像。这里的代码是那个班:
package tile;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import image.Assets;
public class Tile {
public static int x, y, width, height;
public static BufferedImage image;
Graphics graf;
public static int id;
public Tile(int tx, int ty, int twidth, int theight, Graphics g, BufferedImage timage, int tId)
{
this.width = twidth;
this.x = tx;
this.y = ty;
this.image = timage;
this.graf = g;
this.height = theight;
this.id = tId;
}
public void render()
{
this.graf.drawImage(this.image, this.x, this.y, this.width, this.height, null);
}
//And then here are the getters and setters methods...
我想创建一个对象Tile数组,其中此数组的每个元素都有不同的属性。 所以我把这段代码写在另一个类中:
...
Tile []t = new Tile[216];
for(int i = 0; i < 100; i++)
{
t[i] = new Tile(x, y, width, height, graphic, image, id)
t[i].render();
}
...
但是每当它在这个数组中创建一个新的Tile对象时,在此之前创建的另一个对象具有与新创建的相同的属性。 我的错误在哪里? 感谢您的回答,请原谅我这个糟糕的英语。
答案 0 :(得分:2)
不要使用静态变量。而不是写
public static int x, y, width, height;
public static BufferedImage image;
public static int id;
试
public int x, y, width, height;
public BufferedImage image;
public int id;
静态变量是全局变量,这意味着它们由所有实例共享。这就是创建新实例时覆盖属性的原因。