2013-05-30 115 views
1

我正在用Java遊戲,我有它加載圖像,像這樣Java遊戲圖片

class ImageLoader { 
    public static ImageIcon image_1 = new ImageIcon(this.class.getResource(file_name_of_image); 
    public static ImageIcon image_2 = new ImageIcon(this.class.getResource(file_name_of_image); 
    public static ImageIcon image_3 = new ImageIcon(this.class.getResource(file_name_of_image); 
    public static ImageIcon image_4 = new ImageIcon(this.class.getResource(file_name_of_image); 

    public Image getImage1() { 
     return image_1.getImage(); 
    } 
} 

我那樣稱呼他們

// paint method 
g.draw(ImageLoader.getImage1()...); 

setIcon(ImageLoader.image_1); 

一類我問題在於,當我的程序運行時,CPU使用率很高,我認爲這是因爲必須在每次重新繪製時加載這些圖像,而且我應該提到,ima ges的尺寸可能與它們的組件不一樣,因此需要進行一些縮放。

我應該使用BufferedImage嗎?或者可能有人向我解釋我可能做錯了什麼,或者問題是什麼?

+0

請發表你的'paint()'代碼。代碼很可能在其中存在一些低效率。 –

+0

你可以使用jvisualvm來分析你的應用程序,它應該告訴你什麼是使用CPU。 – BevynQ

回答

4

我認爲你的高CPU必須來自其他地方。一旦這些靜態變量被加載,它們不會被第二次加載,而不管重新繪製。在你的程序開始時,可​​能會有很高的cpu,但它會加載一次,但我沒有看到任何第二次加載它的原因。

+0

啊哈,我注意到負載上升了,但它不會回落,這就是爲什麼我懷疑它是圖形的東西,因爲遊戲不是那麼大,圖形是最密集的部分。謝謝,我會研究它 – user2407444

+1

油漆週期之間的時間可能會縮短 – MadProgrammer