Ich bin dabei, mit PhoneGap ein JavaScript / HTML5-Spiel (mit Canvas) für Handys (Android / iPhone / WebOS) zu erstellen. Ich versuche gerade herauszufinden, wie die Benutzeroberfläche und das Spielbrett aufgebaut werden sollen und wie sie interagieren sollen, aber ich bin mir nicht sicher, welche Lösung die beste ist. Folgendes kann ich mir vorstellen:
Erstellen Sie die Benutzeroberfläche direkt im Erstellungsbereich, indem Sie z. B. drawImage und fillText verwenden. Erstellen Sie Teile der Benutzeroberfläche außerhalb des Erstellungsbereichs mit regulären DOM-Objekten und schweben Sie dann ein Div über den Erstellungsbereich, wenn Benutzeroberflächenelemente den Erstellungsbereich des Spielbretts überlappen müssen. Gibt es andere mögliche Techniken, mit denen ich die Benutzeroberfläche des Spiels erstellen kann, an die ich nicht gedacht habe? Und welche davon würden als "Standard" bezeichnet werden (ich weiß, dass HTML5-Spiele nicht sehr beliebt sind, also gibt es wahrscheinlich noch keine "Standard" -Methode)? Und zu guter Letzt, welchen Weg würdest DU empfehlen / benutzen?
Vielen Dank im Voraus!
quelle
Antworten:
Beide Lösungen (Zeichnen auf der Leinwand im Vergleich zu herkömmlichem HTML / CSS) sind vollständig gültig und funktionieren einwandfrei. Einige Dinge zu beachten:
Einige davon werden subjektiv sein; Ein Entwickler, von dem ich weiß, dass er es immer bevorzugt, Canvas zu verwenden, da DOM für ihn nur hässlich und wortreich ist. Da beide Lösungen problemlos funktionieren, würde ich einen einfachen Bildschirm in Ihrer App auswählen, ihn mit beiden Methoden schnell separat entwickeln und feststellen, welcher sich einfacher / besser anfühlt.
Viel Glück!
quelle
Ich habe easeljs für meine Canvas-Interaktion verwendet.
Es ist ziemlich gut und erleichtert solides Design. Eines der Hauptmerkmale, für das ich mich entschieden habe, war die Möglichkeit, die Position Ihrer Canvas-Objekte und dom-Elemente zu synchronisieren.
Dies macht es einfach, CSS-Sprechblasen und statische UI-Elemente wie den Hud-Frame und dergleichen zu erstellen.
Der Vorteil, den dies für Browser hat, ist, dass Sie die reiche Leinwand erhalten, aber die kleineren und statischen Dinge an den Dom verpfänden können, um die Leistung in Schach zu halten.
quelle
Canvas ist auf mobilen Plattformen langsam, zumindest auf mobilen Safaris. Daher sollten Sie die CSS-basierte Positionierung von Objekten auf diesen Plattformen verwenden. Verwenden Sie speziell "translate3d", um das hardwarebeschleunigte Rendern von Objekten zu aktivieren.
Schauen Sie sich die CAAT-Bibliothek für Canvas an, sie ist schnell und Sie können CSS-gestützte "Akteure" verwenden, ohne die Spiellogik zu ändern.
Ich kann noch keine Links posten, aber hier sind einige Pseudolinks http://labs.hyperandroid.com/animation
quelle
Muss über Leinwand Langsamkeit auf dem iPhone 4 zustimmen. Ziemlich sicher, Safari Leinwand wird nicht von GL unterstützt. Mein freudiges Spiel läuft schnell auf dem iPhone 3GS und Android, aber auf dem iPhone 4 hat das Retina-Display meiner Meinung nach zu viele Pixel, oder wenn die Leinwand nicht auf GL läuft, würde dies erklären, warum es schleppt. Ich mag das Canvas-Entwicklungsmodell, habe die Option css translate3d noch nicht ausprobiert. Insbesondere habe ich GWT und den Canvas-Wrapper gwt-g2d (Optimierung / Verschleierung) verwendet. http://www.photonjunky.com/shootout.html
quelle
Ich würde vorschlagen, Ihre Steuerelemente als HTML-Elemente wie
menu
undcommand
aus Gründen der Barrierefreiheit beizubehalten. Mit ein bisschen CSS können Sie Elemente über einer Zeichenfläche anzeigen , ohne die vorgefertigten Funktionen von HTML zu verlieren.quelle
Ich weiß, dass dies eine alte Frage ist, aber heute (März 2013) wissen wir es besser. Ich entschloss mich zu antworten, falls jemand anders hier herein stolperte, wie ich es tat. Ich muss mit den meisten anderen Antworten nicht einverstanden sein. Sie gelten wahrscheinlich für die Entwicklung von Webbrowsern, jedoch nicht für mobile Geräte. Es macht einen großen Unterschied, welchen Pfad Sie wählen (DOM- oder Canvas-Animation). Die Android-Webansicht ist an sich völlig nutzlos (langsam, stotternd), was Phonegap für die Entwicklung von Android-Spielen nutzlos macht, es sei denn, Sie können die Hardwarebeschleunigung anwenden, die derzeit nur mithilfe von Canvas-Animation und einem geeigneten Framework möglich ist. Weitere Informationen finden Sie in dieser Antwort .
quelle
Sie können es auf millionenfache Weise tun. Sie fühlen sich jedoch am wohlsten und Ihre Ingenieure fühlen sich am sichersten.
Wenn Sie Inspiration oder ein Codebeispiel suchen, ist hier eine Möglichkeit, wie ich es mache. Ich habe eine Funktion, die wiederholt ein Menü zeichnet, bis eine Taste gedrückt wird. Wenn der Knopf gedrückt wird, wird das Spiel geladen und die alten Klickereignis-Listener des Menüs werden entfernt und neue Klickereignis-Listener des Spiels werden hinzugefügt. Ich beende auch die alte Draw-Schleife des Menüs und starte eine neue Game Draw-Schleife. Hier sind einige ausgewählte Ausschnitte, die Ihnen einen Eindruck davon geben, wie es gemacht wird:
Auf diese Weise kann ich Spielzeichnen und Spielereignisse von Menüzeichnen und Menüereignissen trennen. Außerdem habe ich die Möglichkeit, Spiel- / Animationselemente in meinen Menüs zu verwenden, wenn ich möchte, dass sie wirklich hübsch aussehen.
quelle