作爲任務的一部分,我正在重新創建「塞爾達傳說與過去的鏈接」。爲遊戲繪製背景圖像的Java優化
我得到了以下問題,遊戲世界是一個BufferedImage,其中我subImage()是玩家當前位置所需的部分。遊戲可以運行,但使用CPU的80%/ 110%。個人資料顯示,罪魁禍首是圖像的繪製。
所以我想我把背景放在播放器,敵人等JPanel單獨的JPanel中。 將它們渲染爲互相重疊(JLayeredPane),並重新繪製背景面板的次數要少得多。
但我該如何做到這一點我該如何告訴擺動畫一個面板x秒和其他y次?如果你有更好的方式讓我知道。
下面是我在此刻得到了:
public class Main extends JFrame
{
private ZeldaGame game = new ZeldaGame();
private View view = new View(game);
private BackgroundView bckView = new BackgroundView(game);
private Controller ctl = new Controller(game, view, bckView, this);
public Main()
{
setLayout(null);
view.setBounds(0, 0, game.getWidth(), game.getHeight());
bckView.setBounds(0, 0, game.getWidth(), game.getHeight());
JLayeredPane pane = new JLayeredPane();
pane.add(bckView, 1);
pane.add(view, 0);
setLayeredPane(pane);
setSize(game.getWidth(), game.getHeight());
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args)
{
new Main();
}
}
謝謝。
謝謝我發現一篇文章感謝您對bi.getGraphics的建議,請參閱我的答案。 GTGE聽起來不錯,但我自己也是爲了體驗而做的。無論如何它都是一項任務。 PS JCanvas不是Java的一部分,所以你的意思是Canvas或JCanvas項目? – MrHus
GTGE現在是開源的,看看裏面(http://code.google.com/p/gtge) - 這是我學習了很多有效的Java2D遊戲技術的地方,加上*非常接近於什麼如果你從頭開始做,你會做的:)而且,對不起,我的意思是Canvas而不是JCanvas(oops)。 –