2011-12-20 11 views
2

これは意味があると思います。 Slick2dライブラリでJavaを使用していますが、それはおそらく問題ではありません。同じクラスから複数の文字列を描く

私の問題は、複数の長方形と文字列を同じサブクラスからレンダリングしようとしていますが、実際には最後のレンダリングだけが実際にレンダリングされます。

ここ

私のエンティティクラスのコード:ここ

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には新しいので、本当に明白な問題になる可能性が高いことを覚えておいてください。

答えて

3

問題は静的変数変更を使用しないことです。エンティティクラス内の3つの場所すべてを削除し、次のように新しいエンティティクラスを使用します。あなたの変数からstatic修飾子を除去することにより、

Entity m1 = new Entity("Monster1", 100, 400, 200); 
m1.render(g); 
+0

ありがとうございました。 – Tankyroo

1

スタート:

Javaでは
public String name; 
public int health, x, y; 

、あなたは属性がstaticであることを宣言するときに、クラスのすべてのインスタンスがまったく同じ属性を共有し、 1つのインスタンスがその値を変更した場合、他のインスタンスはすべてに変更されます。これは、すべてのインスタンスに対して同じ属性ですからです。

これは、最後の矩形だけが描画されたように見える理由を説明しています。実際にはすべて同じ座標で描画されています。

関連する問題