2014-04-01 20 views
0

我給了我90張形成爆炸動畫的奇數圖像。當我開始「播放」動畫時,我使用Swing TimerJLabel設置了一個新圖標,並循環播放,直到達到最後一張圖像。存儲ImageIcons

我的問題是:是否更好地加載和存儲所有的ImageIcons在某個地方的某種靜態形式,或每次我需要它們從文件加載它們?

爆炸在遊戲中相當普遍,我有兩種尺寸(每種圖像對於每種尺寸的爆炸縮放比較低效,當我希望它們快速交換時)會產生200幅圖像(迂迴)。

存儲或加載?

+0

每次加載它們通常會更快,並且依賴於現在經常使用它們,可能更少的資源強度 – MadProgrammer

回答

2

對於一個遊戲,使用Swing組件來表示遊戲對象(Sprites)可能不是最好的方法。我將使用單個JPanel作爲渲染組件,並重寫其paintComponent()方法來爲我自己的遊戲對象進行渲染。

這樣可以避免處理Swing組件錯綜複雜的問題(例如,它們可能會在實際繪製的位置添加不需要的間距/偏移量,以及更難控制繪製順序 - 當兩個對象重疊時很重要)。

我不會用任何類型的圖標,只是使用java.awt.Image中,或者你自己類型來表示的圖像(例如以使底層圖像的部分 - 如精靈表需要)。圖標並沒有真正爲遊戲添加任何價值。

如果圖像數據很容易放入內存,我甚至會在開始之前加載所有圖像。如果有太多的圖像預先加載它們,我會使用某種緩存來保留儘可能多的圖像 - 緩存可能會使用基於LRU的方案來決定保留哪些圖像。

1

我使用SwingTimer爲JLabel設置一個新的圖標,並循環直到到達最後一個圖像。

你可能要考慮使用Animated Icon。它可以在任何可以使用圖標的地方使用。

AnimatedIcon類使用加載的圖標,所以我想我的答案是預加載易用性和CPU效率。