2010-02-15 11 views
32

Was sind Vor- und Nachteile beim Erstellen von Spielen in "reinem" DOM ​​im Vergleich zur Verwendung von Canvas?Was sind die Vor- und Nachteile von Canvas vs. DOM bei der Entwicklung von JavaScript-Spielen?

+1

Verwenden Sie auch keines. Verwenden Sie Flash oder gehen Sie nativ. Der Browser ist keine Spiel-Engine und wird es nie sein. –

+1

Auch gibt es keinen guten Weg, Soundeffekte zu tun.Unity hat einen Web-Player, der nach meiner Erfahrung gut funktioniert. – Deestan

+10

2012 war tatsächlich eine dunkle Zeit. –

Antwort

1

Mit Canvas können Sie Operationen ausführen, wie z. B. eine Rotation, die Sie mit reinem Dom nicht ausführen können, ohne einige "schwere" Tricks zu verwenden. Auf jeden Fall ist das Dom schneller und Sie können es in jedem Browser ohne Probleme verwenden. Sie müssen darüber nachdenken, was Sie in dem Spiel verwenden werden, wenn Sie nur grundlegende Operationen verwenden Sie das Dom, andernfalls wählen Sie die Leinwand.

+3

DOM ist wirklich schneller? Bist du sicher? Ich machte eine einfache Pre-Game-Engine mit 2-3 beweglichen Elementen in DOM und es war schrecklich. Ich habe noch nie Canvas ausprobiert, aber Beispiele, die ich im Internet gesehen habe, waren ziemlich schnell (schneller als andere DOM-Spiele, die ich gesehen habe). Wo kann ich darüber lesen? – budzor

+0

Ich bin mir absolut sicher. Denken Sie daran, dass Canvas eine große Menge an Daten manipulieren muss. – mck89

+5

Ähm, nein, der häufigste Grund für die Verwendung von Canvas ist, dass es schneller ist als das Erstellen und Ändern von 1000en von DOM-Elementen. – Nickolay

0

Wenn Sie mit Canvas entwickeln, müssen Sie die GameLoop-Technik verwenden, die sehr schmerzhaft ist, da Sie alle Elemente ständig neu zeichnen müssen.

Wenn Sie mit DOM entwickeln, können Sie nur die Objekte neu zeichnen, die geändert wurden und die harte Arbeit für die Browser-Implementierung ermöglichen.

Wenn Ihr Spiel ein paar Änderungen pro Frame hat, dann können Sie das DOM benutzen, ansonsten benutzen Sie bitte den Canvas! Es ist so viel schneller!

+3

Nicht wahr- wenn deine Spielszene keine hat Änderungen und Sie haben es richtig codiert - Sie sollten die Szene nicht erneut zeichnen. In dieser Hinsicht erfordert Canvas mehr Wissen über Spielentwicklungstechniken – cloakedninjas

+0

Ja, Sie haben Recht! Aber ich denke, es ist keine gute Wahl mit Canvas für diesen Fall – melanke

7

Leinwand Profis:

  1. Pixel manipulieren könnte und Filtereffekt anwenden, so leicht für die Bildverarbeitung;
  2. sehr effizient für kleine Größe, aber Hunderte von Elementen im Spiel
  3. viele Bibliotheken für Spiel gefunden Leinwand verwenden könnten, wie box2dweb und könnten awesome Spiele wie böser Vogel

Nachteile machen:

  1. es ist zustandslos, also müssen Sie die Zustände der Elemente in der Zeichenfläche aufzeichnen und den Treffertest selbst durchführen.
  2. wenig effizient für sehr große Größe, aber mit ein paar Elementen im Spiel
  3. große Fähigkeit, große Verantwortung. die Freiheit zu zeichnen, bringt ein, dass Sie alle ZeichnerInnen in Rechnung stellen müssen. Zum Glück gibt es dort viele Bibliotheken wie cocos2d-html5, IvanK.

DOM Profis:

  1. Rendering durch den Browser, so dass weniger fehleranfällig;

Nachteile:

  1. konnte nur mit CSS einfacher Animation tun, dass das Spiel nicht fließend macht;
  2. nicht gut für die Manipulation von Hunderten von DOM-Elementen;  
+1

Zeiten haben sich geändert, Browser Layout Engines wurden schneller und JS kann komplexe Animationen, die CSS nicht tun können. Außerdem kann DOM bei entsprechender Programmierung mit Spielen umgehen. Sie können auch einen DOM-Renderer für Physik-Engines erstellen, wenn Sie auf so etwas stehen – K3v1n

+0

@ K3v1n, Die eigentliche Frage ist Warum nicht Leinwand? – Pacerier

+0

@Pacerier Canvas ist als Low Level gedacht, daher ist die Verwendung der API nativ für Anfänger (einschließlich mir) komplex. Zugegeben, es gibt Bibliotheken, um den Rendering-Teil zu verwalten. – K3v1n

Verwandte Themen