[英]Drawing multiple strings from the same class
我希望这是有道理的。 我正在将Java与Slick2d库一起使用,但这可能没关系。
我的问题是,我试图从同一个子类渲染多个矩形和字符串,但是当我这样做时,实际上只有最后一个渲染。
这是我的Entity类中的代码:
public class Entity {
public static String name;
public static int health, x, y;
public Entity(String n, int h, int posx, int posy) {
name = n;
health = h;
x = posx;
y = posy;
}
public static void render(Graphics g) {
g.drawString(name, x-20, y-16);
g.drawRect(x, y, 16, 16);
}
}
这就是我试图从主班级调用它的方式:
public void render(GameContainer gc, Graphics g) throws SlickException {
new Entity("Monster1", 100, 400, 200);
new Entity("Monster2", 100, 500, 200);
Entity.render(g);
}
我究竟做错了什么? 请记住,我还是Java的新手,所以它很可能是一个非常明显的问题。
问题是您不应该使用静态变量修饰符。 在实体类的所有三个位置将其删除,然后按如下所示使用新的实体类。
Entity m1 = new Entity("Monster1", 100, 400, 200);
m1.render(g);
首先从变量中删除static
修饰符:
public String name;
public int health, x, y;
在Java中,当您声明一个属性为static
,该类的所有实例将共享完全相同的属性,并且如果一个实例更改其值,则所有其他实例都将更改为-因为所有实例的属性都相同。
这就解释了为什么似乎只绘制了最后一个矩形-实际上所有这些矩形都是在完全相同的坐标下绘制的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.