開始研究之前進行研究是一個好主意,所以我在開始一個項目之前一直在Stackverflow的文章中查看。使用Cliping增加幀速率的Java Tilemaps:有什麼可以改錯的?
現在在查找tilemaps的其他問題之一導致我的Java教程之一,特別是這個頁面(http://docs.oracle.com/javase/tutorial/uiswing/painting/step3.html),其中一些引起了我的眼睛,這樣的:
private void moveSquare(int x, int y) {
int OFFSET = 1;
if ((squareX!=x) || (squareY!=y)) {
repaint(squareX,squareY,squareW+OFFSET,squareH+OFFSET);
squareX=x;
squareY=y;
repaint(squareX,squareY,squareW+OFFSET,squareH+OFFSET);
}
}
對於那些誰不知道在paintX被調用的時候發生了什麼,在squareX,squareY上繪製了一個紅色方塊,這是允許你改變squareX和squareY的方法,它通過告訴Java限制區域被重繪爲only來加速重繪過程舊的和新的位置(這是兩個電話重新繪製)
現在這聽起來像一些我應該使用,當瓷磚更新時,它的座標被重新繪製,但瓷磚地圖通常涉及二維數組,並在繪畫時遍歷整個陣列,可能涉及多個圖像在一個位置,而大多數地圖不會重繪這仍然可能會減慢速度。
所以你給你的瓷磚添加一個標誌,指出是否有東西發生了變化,這會導致它自上次繪製所有東西后出現不同的外觀,並且只放置已更改瓷磚的圖像。
這個效果很好,直到類似窗口繪製的圖形經過最小/最大循環,現在每個圖塊都需要它的圖形更新,但沒有圖標會被標記,導致一個空白屏幕。
什麼是最好的爲什麼處理這個?
還有什麼我錯過了?