簡體   English   中英

Java Swing重/慢paintComponent - 任何建議?

[英]Java Swing heavy/slow paintComponent - any advice?

我正在制作一個滾動的2D地圖/平鋪游戲。 每個圖塊(存儲為圖塊[21] [11] - 每個圖總共231個圖塊)最多可包含21個值(存儲為int [3] [7])。 全屏時我一次看到大約8張地圖。

平均而言,每個地圖繪制大約需要0.03秒(使用System.nanoTime找到)。 問題是,只要屏幕上有多個地圖,Swing事件輪詢就會明顯變慢。

這有什么解決方案嗎? 我無法一次繪制地圖以將其保存為圖像,因為它具有涉及移動演員的透明度,因此它變化太頻繁。 另外我不認為我可以在paintComponent中調用一個線程來繪制地圖而不會出現故障,但我並不積極。

我的Tiles不是任何類型的JComponent ,它們只是數據。 我將其容器稱為MapPane ,它在paintComponent繪制所有切片。

同樣, JTable單元格只是在JComponent呈現的數據; 這里提到的flyweight模式仍然適用:目標是省略任何渲染不可見單元格的工作。 剖析自我時間 ,以優化渲染; 這里引用的KineticModel中檢查了一些方法。

不需要縮放的BufferedImage是最好的。 如果必須縮放,請嘗試與插值類型相關的RenderingHints 如果合成太貴,可以使用SwingWorker在后台構建地圖; publish()他們,因為他們變得可用和process()他們在EDT,如圖所示這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM