2014-03-05 33 views
4

我在遊戲引擎已經工作了大約6天直,奪回一切,我已經從製作遊戲早在老的DOS天的教訓。然而,當時有雙緩衝,你可以簡單地重繪所有的速度。唉,在HTML5中是另一回事。無限滾動與瓷磚地圖畫布沒有重繪

到目前爲止,我的發動機具有「層」,這是畫布置於另一層之上,在0,0位置,我在屏幕上繪製它們的上下文一個比另一個座標0,0。這意味着,你繪製一個圖層,並在繪製階段繪製圖層(當然,如果它滿足幾個條件的話)。

我設法做了一個例程在畫布上繪製平鋪地圖,並使用 - >this < - 文章我設法通過在每一幀上重繪來滾動。當你使用320x240時,這一切都可以正常工作,但是當我將它增加到640x480並將瓦片數加倍時,它會像地獄一樣慢下來。

所以我想出了這個主意(僅用於本例中的緣故水平滾動),用稍大的畫布:

  1. 畫在畫布上所有的瓷磚,並通過相機的X軸偏移其x位置POS機。
  2. 如果相機位置(相對於第一繪製瓦片)> tile_width
    1. 重繪整個畫布,增加1到起始X瓷磚和
    2. 復位畫布的X位置,以零

這我只會在每次滾動時都重新繪製畫布,並且通過一些優化,我甚至可以僅重繪邊緣拼貼而不是整個畫布(反正這是主意)。

所以我的問題是:我會如何在代碼?這可能是我連續六天在這臺發動機上工作而感到厭倦,但我卻沒有看到它。另外,更讓我困惑的是:如何在不影響畫布其他部分的情況下繪製邊緣貼圖? :(

我可以展示一些代碼,但我認爲我可以用一個小的jsfiddle例子來適應我自己的代碼,但是如果您確實需要查看代碼,我可能只是爲此做一個小示例。但請注意,我的繪圖代碼只是文章代碼的一個修改後的副本(用於測試滾動),因此您可以假定我沒有寫入tilemapping代碼。我有,但我打賭我需要爲這種情況重寫它xD 。

提前感謝 - !DARKGuy

回答

1

好吧,我終於成功地做到這一點,解決我自己的問題 - 但是,它的速度更快,但還是戰戰兢兢我以前嘗試如果任何人的興趣請諮詢 - 但SI我甚至沒有收到任何評論,我認爲沒有人反對。

下面是GameDev的最終工作解決方案