Estamos desarrollando un juego de saltar y correr con HTML5 y JavaScript y tenemos que construir un marco de juego propio para esto. Aquí tenemos algunas dificultades y nos gustaría pedirle algunos consejos:
Tenemos un objeto "Stage", que representa la raíz de nuestro juego y es un envoltorio div global. El escenario puede contener múltiples "Escenas", que también son elementos div. Implementaríamos una escena para la tarea de reproducción, pausa, etc. y cambiaríamos entre ellas. Por lo tanto, cada escena puede contener múltiples "Capas", que representan un lienzo. Estas capas contienen "ObjectEntities", que representan imágenes u otras formas como rectángulos, etc. Cada Objectentity tiene sus propios Lienzos temporales, para poder dibujar imágenes para una entidad, mientras que otra contiene un rectángulo.
Establecemos una escena activa en nuestro escenario, por lo que cuando se juega el juego, solo se dibuja la escena activa. Llamando activeScene.draw()
, llama a todas las subcapas para dibujar, que dibujan sus entidades (llamadas drawImage(entity.canvas)
). ¿Pero es esta una buena práctica? ¿Tener múltiples lienzos para dibujar? Cada ciclo de juego, cada contexto de capa se borra y se vuelve a dibujar. Por ejemplo, solo tenemos una capa de fondo inmóvil ... ¿no sería más útil dibujar esto una vez y no borrarlo cada vez y volver a dibujarlo? ¿O deberíamos usar un lienzo global, por ejemplo, en el escenario y solo usar este lienzo para dibujar? Pero pensamos que esto sería demasiado caro ...