2011-12-20 2 views
2

나는 이것이 의미가 있기를 바랍니다. Slick2d 라이브러리에서 Java를 사용하고 있습니다.같은 클래스에서 여러 문자열 그리기

내 문제는, 동일한 하위 클래스에서 여러 개의 사각형과 문자열을 렌더링하려고하지만, 실제로는 마지막 하나만 렌더링됩니다.

여기

내 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); 
} 

? 제발 자바에 익숙하지 않다는 것을 명심하십시오. 그래서 정말 명백한 문제 일 것입니다.

답변

3

문제는 정적 변수 수정자를 사용하지 않아야한다는 것입니다. 엔티티 클래스 내의 세 곳에서 모두 제거한 다음 새 엔티티 클래스를 다음과 같이 사용하십시오. 당신의 변수에서 static 수정을 제거하여

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

완벽하게 일했습니다. 감사합니다. – Tankyroo

1

시작 :

자바에서
public String name; 
public int health, x, y; 

, 당신은 속성이 static로 선언 할 때, 클래스의 모든 인스턴스는 동일한 속성을 공유합니다, 한 인스턴스가 값을 변경하면 다른 인스턴스는 모두로 변경됩니다. 이는 모든 인스턴스에 대해 동일한 속성이기 때문입니다.

그 이유는 마지막 사각형 만 그려지는 이유입니다. 모든 사각형은 실제로 그려지지만 동일한 좌표로 그려져 있습니다.