2010-02-15 150 views
32

與使用畫布相比,在「純」DOM中創建遊戲的優點和缺點是什麼?JavaScript遊戲開發中Canvas與DOM的優缺點有哪些?

+1

請勿使用。使用閃光燈或去本機。瀏覽器不是遊戲引擎,永遠不會。 –

+1

此外,沒有好的方法來做音效。Unity有一個網絡播放器,在我的經驗中效果很好。 – Deestan

+10

2012的確是一個黑暗的時代。 –

回答

1

使用畫布,您可以執行諸如旋轉之類的操作,而無需使用某些「重量級」技巧即可使用純圓頂無法完成的操作。無論如何,DOM更快,你可以在每個瀏覽器中使用它,沒有任何問題。你必須考慮你將在遊戲中使用什麼,如果你只使用基本操作,使用dom,否則選擇畫布。

+3

DOM真的更快嗎?你確定?我用DOM中的2-3個移動元素製作了一個簡單的遊戲前引擎,它非常糟糕。我從未嘗試過畫布,但在互聯網上看到的例子非常快(比我看到的其他DOM遊戲更快)。我可以在哪裏讀到這些? – budzor

+0

我絕對相信。想想帆布必須處理大量數據的事實。 – mck89

+5

嗯,不,使用canvas的常見原因是它比創建和修改1000個DOM元素要快。 – Nickolay

0

當您使用Canvas進行開發時,您將不得不使用GameLoop技術,這非常痛苦,因爲您必須始終重繪所有元素。

當您使用DOM進行開發時,您將只能重新繪製已修改的對象,並且會讓瀏覽器實現工作變得艱難。

如果你的遊戲每幀有幾個修改,那麼你可以使用DOM,否則請使用Canvas!它快得多!

+3

不是真的 - 如果你的遊戲場景沒有更改並且您已正確編碼 - 您不應該再次重繪場景。在這方面,帆布需要更多的遊戲開發技術知識 – cloakedninjas

+0

是的,你是對的!但我認爲這不是一個好的選擇使用畫布的情況下, – melanke

7

畫布 優點:

  1. 可以操縱像素並應用過濾器的效果,所以容易進行圖像處理;
  2. 爲大小小,但數以百計的遊戲元素非常有效的
  3. 遊戲許多圖書館可以用帆布,如box2dweb被發現,並且可以使真棒遊戲,如憤怒的小鳥

缺點:

  1. 它是無狀態的,所以你必須記錄畫布中元素的狀態,並自己處理點擊測試。
  2. 對於非常大的尺寸效率很低,但在遊戲中只有一個元素
  3. 很強的能力,很大的責任感。畫的自由,帶來你必須負責所有的繪圖人員。幸運的是,那裏有許多庫,例如cocos2d-html5,IvanK。

DOM 優點:

  1. 渲染由瀏覽器,所以不易出錯;

缺點:

  1. 可以做簡單的動畫只用CSS,這使得遊戲不流暢;
  2. 對操縱數百個DOM元素沒有好處;  
+1

時代已經改變,瀏覽器佈局引擎變得更快,JS可以做CSS的複雜動畫。另外,通過適當的編程,DOM可以處理遊戲。你也可以爲物理引擎編寫一個DOM渲染器,如果你遇到這種情況 – K3v1n

+0

@ K3v1n,真正的問題是爲什麼不是畫布? – Pacerier

+0

@Pacerier canvas意味着低級別,因此對於初學者(包括我)使用API​​本身很複雜。當然,有些庫可以管理渲染部分。 – K3v1n