2012-02-29 177 views
3

我在做一個包括物理和圖形引擎的遊戲引擎。現在我的圖形引擎被設置爲60 fps,有時候我發現屏幕上的更新速度很慢。我有一個JFrame,我添加了一個可以移動的JPanel,這意味着圖形引擎在每個循環中都執行frame.repaint()。我開始相信在畫面上進行重新繪製可以在屏幕上實現小的延遲。JFrame vs JPanel

延遲是這樣的,JPanel在一條直線上移動,突然它可以比平常跳得更遠。

在JFrame上放一個JPanel「gameField」,然後在gameField中添加一個JPanel「player」並重新繪製gameField會更好嗎?或者它與重繪JFrame基本相同?我剛剛聽說JFrame應該是一個沉重的組件。

我試過設置更高的fps,它不會改變任何東西。

+1

你看過寫入緩衝區然後寫入屏幕? – 2012-02-29 21:52:11

+0

你願意用一個例子來精心設計嗎? :)我不是在揮杆 – 2012-02-29 22:02:02

+2

請編輯您的問題,以包括一個[sscce](http://sscce.org/),展示您描述的問題。 ['AnimationTest'](http://stackoverflow.com/a/3256941/230513)可能是一個有用的起點。 – trashgod 2012-02-29 22:06:19

回答

3

看看這個頁面here,這是很多的閱讀,但應該包含你所需要的大部分。

編輯:這頁here更加簡潔

有點這個堆棧溢出後here交易的雙緩衝。

儘管我可以給你的最好的建議是找到'Java的殺手遊戲編程'的副本。您可以輕鬆地從網上免費獲得舊版電子書版本。很多東西都有點過時,但前幾章討論瞭如何創建遊戲循環並寫入緩衝區,這些章節仍然非常相關,從長遠來看,這對您有很大的幫助!

+0

乾杯隊友,這是我需要:) – 2012-03-01 20:53:42