Мы разрабатываем игру «прыгай и беги» с HTML5 и JavaScript, и для этого нужно создать собственную игровую среду. Здесь у нас есть некоторые трудности, и мы хотели бы попросить у вас совета:
У нас есть объект "Stage", который представляет корень нашей игры и является глобальной оболочкой div. Этап может содержать несколько «сцен», которые также являются div-элементами. Мы реализуем сцену для игрового задания, для паузы и т. Д. И переключаемся между ними. Поэтому каждая сцена может содержать несколько «слоев», представляющих холст. Эти Слои содержат «ObjectEntities», которые представляют изображения или другие фигуры, такие как прямоугольники и т. Д. Каждый объект имеет собственный временный канал, чтобы иметь возможность рисовать изображения для одного объекта, тогда как другой содержит прямоугольник.
Мы устанавливаем activeScene в нашей сцене, поэтому, когда игра идет, рисуется только активная сцена. Вызов activeScene.draw()
, вызывает все подслои для рисования, которые рисуют их сущности (вызов drawImage(entity.canvas)
). Но разве это хорошая практика? Наличие нескольких холстов для рисования? Каждый игровой цикл, каждый слой-контекст очищается и рисуется снова. Например, у нас просто есть неподвижный фоновый слой ... разве не было бы более полезно нарисовать это один раз, а не очищать каждый раз и перерисовывать? Или мы должны использовать глобальный холст, например, в сцене и просто использовать этот холст для рисования? Но мы думали, что это будет дорого ...