2013-12-11 2 views
0

JApplet을 사용하여 2 인용 게임을 만들고 있습니다. 첫 번째 플레이어의 화면을 왼쪽에 그리고 두 번째 플레이어의 화면을 오른쪽에 그린 다음 전체 맵의 미니 맵을 아래쪽 중앙에 그립니다. bimg라는 버퍼링 된 이미지에 모든 것을 그 다음 bimg.getSubimage를 사용하여 각 플레이어의 위치에 따라 양면을 얻습니다. 추가 매개 변수를 사용하여 표준 drawImage 메서드를 사용하여지도의 전체 이미지의 크기가 조절 된 버전을 그립니다. 제가 가지고있는 문제는 몇 프레임마다 깜박 거리는 미니 맵입니다. 때때로 왼쪽면을 그리고 때로는 오른쪽면을 그립니다. 양면을 그리고 그 다음에지도를 그리는 대신에 먼저 오른쪽을 그립니다. 누군가가이 문제를 해결하는 데 도움이 될 수있는 방법이 있다면 궁금합니다. 내가 제공 한 컨텍스트가 충분히 명확하고, 여기에 참조 할 코드가 있습니다. 감사합니다자바의 미니 맵 JApplet 게임이 깜박임

설명을 바탕으로
drawP1Side = bimg.getSubimage(p1.viewX, p1.viewY, 400, 700); 
drawP2Side = bimg.getSubimage(p2.viewX, p2.viewY, 400, 700); 
g.drawImage(drawP1Side, 0, 0, null); 
g.drawImage(drawP2Side, 410, 0, null); 
g.drawImage(bimg, 320, 500, 200, 200, null); 
+0

어떻게 페인팅합니까, 어느 클래스의 어떤 방법을 사용합니까? 'drawImage'의'ImageObserver' 매개 변수에'null '을 넘기는 이유는 무엇입니까? – MadProgrammer

답변

1

... 당신은 최고 수준의 컨테이너 paint을 무시하지 말아야 이유의 놀라운 세계에

에 오신 것을 환영합니다.

기본적으로 JApplet과 같은 최상위 컨테이너는 이중 버퍼링되지 않으므로 업데이트 될 때 깜박입니다.

대신

은 자세한 내용

모든 Performing Custom Painting에서 봐 ... JPanel 같은 것을에서 연장, 자신에게 사용자 지정 구성 요소를 생성하고 paintComponent 메소드의 오버라이드 (override)가 사용자 정의 그림을 수행해야 스윙 구성 요소 (JComponent에서) ImageObsever 구현, 그래서 당신은 ... 당신이 어떤 JComponent 내에서 호출하고 가정 drawImageImageObserver 매개 변수로

,536을 this을 통과해야한다
+0

감사합니다. Jpanel을 확장하기 위해 변경했습니다. 이제는 더 이상 깜박 거리지 않습니다. JAR과 동일하게 실행되고 JPanel 웹 사이트의 애플릿과 동일하게 포함됩니까? – parameter

+0

추측 : D - 기꺼이 도와주었습니다. – MadProgrammer

+0

JAR과 동일하게 실행되고 JPanel 웹 사이트의 애플릿과 동일한 것으로 포함됩니까? – parameter