2012-11-01 73 views
2

我正在寫一個基於網格自上而下視圖的Java遊戲。我不太熟悉JPanel paintComponent()和repaint()方法,並且在創建快速畫面繪製函數時遇到了問題。 每個圖塊都是一個具有Tile.paintTile(g,x,y)的對象,用於在g上的(x,y)處繪製圖塊。我想找到一種很好的方式來繪製特定的瓷磚,但我無法找到如何做到這一點。 我有一個世界類與TileAt(x,y)來獲取瓷磚,但我所做的每一次嘗試都造成了口吃或拋出的錯誤。 任何幫助表示讚賞! -RenmusxdJava畫特定對象

編輯:我的嘗試: 我不是很習慣Java的圖形呢,我試着重寫的paintComponent和添加的paintComponent(G,X,Y),但它不喜歡我不叫重繪。我不再擁有代碼,因爲我用paintAll版本替換了它。抱歉。

+0

是圖塊對象獨特之處?也就是說,每個瓷磚會出現在一個地方嗎? – cHao

+3

*「但我所做的每一個嘗試」* [你有什麼嘗試?](http://www.whathaveyoutried.com/)(我的意思是'在代碼中'而不是'在文字中')。 –

+0

你真的應該展示你到目前爲止嘗試過的東西,順便說一句。 – cHao

回答

1

通常更容易每次只要重新粉刷整個屏幕 - 這應該足夠使用上最先進的機器搖擺快。

如果你真的想這樣做部分更新,那麼最好的方法可能是:

  • 創建一個屏幕外BufferedImage,這應該是大小爲您的遊戲顯示區域相同(或稍大,如果你想允許滾動)
  • 將您的瓷磚繪製到此屏幕外圖像中。
  • 當你重新繪製你的觀點(即在paintComponent方法),那麼只需畫出整個的BufferedImage到屏幕上一氣呵成。
+0

謝謝!我會研究這一點。 – Renmusxd