[英]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.