画像を同期して読み込む必要があります。つまり、画像が読み込まれるまでjavascriptの実行を一時停止する必要があります。 image.onloadは非同期であるため、画像がロードされる前にmain関数が戻ります。javascriptと同期して画像を読み込む
私はキャンバスを使用していますが、画像がロードされる前にmain関数が返って描画されると、キャンバス内の他のものが画像の前に描画されます。これは、キャンバスでの描画の順序が非常に重要であるため機能しません!
var img = new Image();
img.onload = function() {
//image drawing code here
}
img.src = "blahblahblah";
//function returns here, and other drawing code happens before image is drawn
同期これを行うために、またはイメージが完全に機能から復帰する前にロードされるまで待つように方法はあり:ここで
は、私が何をしてきたのですか?
私はキャンバス上でたくさんの描画をしている非常に大きなループを持っており、イメージがロードされている間にループを一時停止させるのは難しいです。 image.onloadコールバックを使用した場合、画像はループ内の何かの後ろに描画されます。これにより、画像が背後にあるべきものの前に表示されます。 – devongovett
イメージ読み込みを開始する関数では、最後のものとしてsetIntervalを使用して、image.onloadコールバックによって閉じられたオブジェクトを閉じる関数を開始します。 "interval"関数は、特定のフラグがセットされるまで何もしないでください。そのフラグはimage.onloadコールバックで設定する必要があります。フラグセットが見つかると、 "interval"関数は次のコードを呼び出す必要があります。 「背景」画像の上に描画されるコード。 –
あなたは*それを一時停止することはできません、あなたはあなたの心からこのアイデアを取り除かなければなりません。 –