5 Stimmen

Was ist der wirkliche Vorteil der Verwendung von Canvas für Spiele?

Ich lese derzeit über die Leinwand, aber ich finde es schwer, praktische Vorteile der Verwendung von Leinwand zu finden, wenn eine Menge mit einfachen CSS-Overlays/JavaScript (+ jquery lib) getan werden kann.

Das liegt wahrscheinlich daran, dass ich nicht die VOLLEN praktischen Möglichkeiten der Verwendung von Leinwand kenne.

Ich schaue mir dieses Spiel an: http://www.pirateslovedaisies.com/

Könnte mir jemand erklären, wie und warum Canvas im Gegensatz zu CSS verwendet wird?

7voto

6502 Punkte 108136

Diese ist eine 4k js/canvas Demo, die ich geschrieben habe, um mit dem 2d Kontext zu experimentieren ( aquí ist ein Video, falls Ihr Browser nicht funktioniert). Ich habe es nur auf Chrome, Opera, Firefox, Safari und Nexus One Browser getestet.

Beachten Sie, dass keine externen Ressourcen geladen werden (d.h. die Textur und die raytraced envmap werden dynamisch erstellt), so dass es sich nur um eine einzige, in sich geschlossene 4096 Bytes große HTML-Datei handelt.

Kann man so etwas auch mit DIVs machen?

Aber in der Tat stimme ich zu, dass das Spiel, das du IMO verlinkt hast, auch mit DIVs gemacht werden könnte; anscheinend gibt es keine Transformationen - nicht einmal in der Ladeszene mit dem fallenden Gänseblümchen - und die Aktionsbereiche für die Piraten sind nur Kreise. Ich bin mir nicht sicher, aber es könnte sein, dass sogar das Schießen nur in festen Winkeln stattfindet.

Die Leinwand hätte stattdessen auch für andere Zwecke verwendet werden können:

  • Zeichnen allgemeiner schräger Linien und Polygone (die Karte könnte anhand einer kompakten Beschreibung oder zufällig generiert worden sein). Das Schießen kann in jedem beliebigen Winkel erfolgen...
  • Prozedurale Bilderstellung (z. B. Texturen oder spezielle Pixeleffekte)
  • Farbverläufe, Textur-Mapping
  • Allgemeine 2d-Matrixtransformationen

Natürlich ist ein Spiel mit einem Bild+DIVs-Ansatz wahrscheinlich viel einfacher zu machen (eine Menge Photoshop und einfache xy-Animation).

6voto

ThiefMaster Punkte 297146

Das Erstellen von Unmengen von HTML-Elementen ist extrem langsam und speicherintensiv. Das Canvas-Objekt ist für Grafikoperationen gedacht und daher dafür optimiert. Abgesehen davon wie würden Sie eine Kurve mit einfachem HTML/CSS zeichnen? ;)

4voto

vz0 Punkte 31299

Verwendung von <canvas> haben Sie eine pixelgenaue Kontrolle darüber, was auf dem Bildschirm angezeigt wird. Sie müssen sich nicht mit spezifischen Browser-CSS oder DOM-Kompatibilität befassen.

Außerdem ist das ein ziemlich ähnliches Programmiermodell wie bei 2D-Spielen, die nicht für den Browser entwickelt wurden, z. B. bei Spielen, die mit SDL o DirectDraw .

2voto

Phrogz Punkte 283167

Hier ist ein Spiel, das ich geschrieben habe Die Skalierung der Kacheln, das Anti-Aliasing der Linien, ist perfekt. Dies wäre bei Bildkacheln, deren Größe vom Browser geändert wird, nicht der Fall.

Klicken Sie auf die Kacheln, um sie zu drehen und so zu versuchen, alle Verbindungen herzustellen. Klicken Sie auf die Reihe der Schaltflächen oben, um ein neues Brett mit einer anderen Größe zu erhalten; klicken Sie auf die Reihe der Schaltflächen darunter, um ein neues Brett mit einer anderen Anzahl von Verbindungen zu erhalten.

Das Spielkonzept ist nicht von mir, nur die Umsetzung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X