2012-10-14 42 views
1

我一直在研究一個在背景(2D)中具有滾動環境的概念遊戲的小證明。我有一個名爲roadTile的自定義類對象,它基本上是一個200px高的塊,帶有一張圖片以及一些物理圖。我一次將切片存儲在LinkedList 5中。我有一個主循環負責移動所有內容並檢查衝突。循環應該每50ms執行一次(由定時器控制),並通過測量最後一次運行的長度,然後從睡眠時間中扣除它來保持速率不變。LinkedList在add()上產生了巨大的延遲()

這通常運行良好,循環運行時間不到一毫秒,但是當我啓動程序時,它會在第2-7次之後「扼殺」。我刪除了舊的瓷磚,並將新的瓷磚放在列表的底部。在調用add(new roadTile())時,程序將暫停20-400ms,這是計算機時代的一個千年,並且最後這個行爲並不一致。有時候,它有時可以正常工作。

我很笨,如何消除這一點,任何想法?

+0

一個普通的Java鏈接列表? –

+0

yup ..沒什麼特別的 – TRU7H

+0

列表有多大? – SLaks

回答

1

確保在開始使用圖形之前緩存所有內容。這可能是你拖延的原因。

+0

我對編程頗爲陌生,你能澄清一下嗎? – TRU7H

+1

你是編程新手,但你做了一個遊戲..?你確定你知道你在做什麼嗎?緩存你的內容意味着你需要使用的東西事先被放置在內存中,而不是在運行時。 JVM得到了一個「預熱時間」,在開始進行重複性任務前幾次可能需要更長的時間。 – OmniOwl

+1

嗯,我非常鬆散地使用術語「遊戲」,因爲這只是一個jframe,Jpanel,一堆鍵綁定和幾類邏輯。不,我很確定我不完全知道我在做什麼,但是這個嘗試的重點在於學習.. – TRU7H