キャンバスを使用してゲームのメニュー システムを実装しています (特定のパフォーマンス上の理由から、HTML/CSS を使用してメニューを作成することはできません)。JSON を使用して構成されたメニューがあり、menuComponent オブジェクトがそれぞれのプロパティ (x、y、幅、高さ、imagePath など) で作成されます。コンポーネント オブジェクトを反復処理し、componentObjects の draw メソッドを呼び出すメニュー ローダーがあります (もちろん、すべての画像は onload イベントが最初に発生するのを待ちます)。
とにかく、正しい順序で重なり合うように、描画メソッドが呼び出された順序で画像が描画されることを期待しています。ほとんどの場合、この動作は正しいですが、時折間違った順序で描画されることがあります。
私の質問は - Canvas が画像に対して drawMethod が呼び出された順序で画像を描画することを信頼できますか? たとえば、10MBの画像Aと10kbの画像Bがあるとします。画像 A を描画してから画像 B を描画すると、小さい画像であるため、画像 B が最初に読み込まれる可能性はありますか?
私はコードを賢くしようとしていました (コンポーネント オブジェクト内にネストされたコンポーネントを持ち、描画メソッドを再帰的に呼び出す) ため、コードに競合状態が存在する可能性があります。上記の動作が正しいことを確認したいだけです。準備完了フラグが設定されるまでオブジェクトを強制的に待機させるロジックを追加すると、動作するように見えます。しかし、残念ながら、メニューの読み込み時間が遅くなります。