2012-11-01 5 views
2

저는 격자 톱 다운 뷰를 기반으로 한 Java로 게임을 작성하고 있습니다. JPanel paintComponent() 및 repaint() 메서드에 익숙하지 않아 빠른 화면 페인팅 기능을 만드는 데 문제가 있습니다. 각 타일은 g의 타일을 (x, y)에 칠하기위한 Tile.paintTile (g, x, y)가있는 객체입니다. 특정 타일 만 칠하는 좋은 방법을 찾고 싶지만이 방법은 알 수 없습니다. 나는 타일을 얻기 위해 TileAt (x, y)를 가진 World 클래스를 가지고 있지만, 내가 만든 모든 시도로 인해 말더듬이나 던져진 오류가 발생했습니다. 도움을 주시면 감사하겠습니다. -RenmusxdJava는 특정 객체를 페인트합니다.

편집 : 내가 뭘하려 : 나는 매우 아직 Java 그래픽을 사용하고 있지 않다 , 나는 paintComponent에 덮어 쓰기와의 paintComponent (g, X, Y)를 추가하려했지만 내가 칠 호출하지 좋아하지 않는다. 나는 paintAll 버전으로 대체 했으므로 더 이상 코드를 가지고 있지 않습니다. 죄송합니다.

+0

타일 개체가 고유합니까? 즉, 각 타일이 정확히 한 지점에 나타 납니까? – cHao

+3

* "모든 시도는했지만"* [무엇을 시도 했습니까?] (http://www.whathaveyoutried.com/) ('단어'와 반대되는 '코드'를 의미합니다.) –

+0

당신은 정말로 지금까지 시도한 것을 보여줘야합니다. – cHao

답변

1

일반적으로 매번 전체 화면을 다시 그리는 것이 더 쉽습니다. 이는 최신 시스템에서 Swing을 사용하여 충분히 빠릅니다.

당신이 정말로 부분 업데이트를 수행 할 경우, 가장 좋은 방법은 아마도 :

  • 이 게임의 표시 영역과 동일한 크기 여야 오프 스크린 BufferedImage가 (또는 약간 더 큰 당신이 원하는 작성하는 경우 스크롤 허용)
  • 이 오프 스크린 이미지에 타일을 그립니다.
  • 보기를 다시 칠하는 경우 (즉, paintComponent 메서드에서) 전체 버퍼링 이미지를 한 번에 화면에 그립니다.
+0

을 읽어 보는 것이 좋습니다. 감사합니다! 나는 이것을 조사 할 것이다. – Renmusxd

관련 문제