簡體   English   中英

從同一個類中繪制多個字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM