我正在製作一個滾動的2D地圖/平鋪遊戲。每個瓦片(以瓦片形式存儲[21] [11] - 每個地圖總共231個瓦片)可以包含多達21個值(存儲爲int [3] [7])。全屏時,我一次看到大約8張地圖。Java Swing重/慢paintComponent - 有什麼建議嗎?
平均而言,每張地圖大約需要0.03秒來繪製(在System.nanoTime中找到)。問題是,只要屏幕上出現超過1張地圖,Swing事件輪詢顯着減慢。
有沒有解決這個問題的方法?我無法一次畫出地圖將其保存爲圖像,因爲它具有涉及移動演員的透明度,因此它變化頻繁。另外我不認爲我可以調用paintComponent中的一個線程來繪製地圖而不會出現毛刺,但我並不積極。
背景圖像和瓷磚應繪製爲BufferedImages。屏幕上的圖像應該以某種方式緩存,並在需要時調出。通過調用帶參數的方法的重載,可以限制重繪區域。 –
不要害怕使用多個'BufferedImage'作爲圖層來增強效果(後/中/前景)。一般來說,這些應該只有您需要的那麼大,只有在新內容發生變化時才拼接到新內容。 – MadProgrammer
另請參閱此可能的[重複](http://stackoverflow.com/q/23145439/230513)。 – trashgod