Wir entwickeln ein Jump-and-Run-Spiel mit HTML5 und JavaScript und müssen dafür ein eigenes Spiel-Framework erstellen. Hier haben wir einige Schwierigkeiten und möchten Sie um Rat fragen:
Wir haben ein "Stage" -Objekt, das die Wurzel unseres Spiels darstellt und ein globaler Div-Wrapper ist. Die Bühne kann mehrere "Szenen" enthalten, die auch Div-Elemente sind. Wir würden eine Szene für die Spielaufgabe, für die Pause usw. implementieren und zwischen ihnen wechseln. Jede Szene kann daher mehrere "Ebenen" enthalten, die eine Leinwand darstellen. Diese Ebenen enthalten "ObjectEntities", die Bilder oder andere Formen wie Rechtecke usw. darstellen. Jede Objectentity verfügt über eigene temporäre Canvas, um Bilder für eine Entität zeichnen zu können, während eine andere ein Rechteck enthält.
Wir haben eine aktive Szene in unserer Bühne festgelegt. Wenn das Spiel gespielt wird, wird nur die aktive Szene gezeichnet. Calling activeScene.draw()
ruft alle Unterschichten zum Zeichnen auf, die ihre Entitäten zeichnen (Calling drawImage(entity.canvas)
). Aber ist das eine gute Praxis? Haben Sie mehrere Leinwand zum Zeichnen? Jede Spielschleife, jeder Ebenenkontext wird gelöscht und erneut gezeichnet. ZB haben wir nur noch eine Hintergrundebene,… wäre es nicht sinnvoller, diese einmal zu zeichnen und sie nicht jedes Mal zu löschen und neu zu zeichnen? Oder sollten wir zum Beispiel in der Bühne eine globale Leinwand verwenden und diese Leinwand nur zum Zeichnen verwenden? Aber wir dachten, das wäre zu teuer ...