2011-08-05 4 views
0

화면에서 이미지가 움직이는 것을 보여주는 프로그램을 작성 중이지만, 의 drawImage 메소드를 사용해야합니다. 거북이라는 새 이미지를 만든 다음 한 지점에서 이미지를 그린 다음 나중에 이미지를 다시 그립니다. 그러나 처음 그린 이미지는 여전히 표시되지만 어떻게 숨기거나 사라지게 할 수 있습니까? 나는 Java에 익숙하지 않으므로 이것을 가능한 한 간단하게 설명하십시오.DrawImage 숨기기/처리

감사합니다. 당신은 당신이 그것을 다시 그리기 전에 배경으로 이전 위치를 덮어해야합니다

import java.awt.*; 
import java.applet.*; 

public class Race extends Applet { 

     Image tortoise; 

    public void init() { 
      setSize(1275,1000); 
      tortoise = getImage(getDocumentBase(), "resources/tortoise.png"); 



    } 

    public void paint(Graphics g) { 

      g.drawImage(turtle, 100, 100, this); 
      g.drawImage(turtle, 200, 200, this); // Both images are shown.    

    } 
    } 
+0

코드 plz –

+0

그냥 ... – 64bitman

답변

2

: 여기

내 코드의 샘플입니다. clearRect이 좋은 선택입니다.

g.drawImage(turtle, 100, 100, this); 
try { 
    Thread.sleep(5000); 
} catch(InterruptedException e) {} 

g.clearRect(100, 100, turtle.getWidth(null), turtle.getHeight(null)); 
g.drawImage(turtle, 200, 200, this); 

화면에 하나 개의 이미지 이상을 그리는 경우, 화면 상태를 유지하기 위해, 올바른 Z 순서로, 당신은 명확 지역을 중복 모든 이미지를 다시 그려야 할 것이다.

-1

현재 무엇을하고 있는지 고려하십시오. 캔버스를 연 다음 그 위에 무언가를 그립니다. 그리고 그 위에 다른 것을 그립니다. 둘 다 등장합니다.

화면에 Koopas (거북이)가 두 개있을 때 Super Mario Brothers와 같은 비디오 게임을 생각해보십시오. 추첨 (koopa)은 코드 에서처럼 두 번 호출됩니다.

첫 번째 거북이가 사라지게하려면 두 가지 작업을 수행 할 수 있습니다. 가장 간단한 방법은 두 번째 그림을 그리기 전에 배경을 비우는 것입니다.

그 후 ... 거북이 대신 for-loop를 사용하고 drawImage 메서드를 한 번만 사용하십시오 (루프에서).

+0

for-loop는 awt 이벤트 스레드를 보유합니다. 화면이 올바르게 업데이트되지 않습니다. –

+0

잡기 주셔서 감사합니다 ... 방금 마지막 비트를 추가했습니다. – Chris

관련 문제