私たちはHTML5とJavaScriptを使ってジャンプアンドランゲームを開発しており、そのための独自のゲームフレームワークを構築する必要があります。ここにいくつかの困難があり、いくつかのアドバイスをお願いしたいと思います:
ゲームのルートを表す「ステージ」オブジェクトがあり、これはグローバルなdivラッパーです。ステージには、div要素でもある複数の「シーン」を含めることができます。再生タスク、一時停止などのシーンを実装し、それらを切り替えます。したがって、各シーンには、キャンバスを表す複数の「レイヤー」を含めることができます。これらのレイヤーには、「ObjectEntities」が含まれます。これは、画像または長方形などのその他の形状を表します。各Objectentityには、あるエンティティの画像を描画できるようにするための独自のtemporaryCanvasがあり、別のエンティティには長方形が含まれています。
ステージにactiveSceneを設定したので、ゲームをプレイすると、アクティブなシーンだけが描画されます。を呼び出しactiveScene.draw()
、すべてのサブレイヤーを呼び出して描画し、エンティティを描画します(呼び出しdrawImage(entity.canvas)
)。しかし、これはある種の良い習慣ですか?描画する複数のキャンバスがありますか?各ゲームループでは、すべてのレイヤーコンテキストがクリアされ、再度描画されます。たとえば、バックグラウンドレイヤーがまだ残っている場合、…これを一度描画して、毎回クリアして再描画するほうが便利ではないでしょうか。または、ステージなどでグローバルキャンバスを使用し、このキャンバスを使用して描画する必要がありますか?しかし、これは高額になると思っていました...