1
キャンバスにいくつかのイメージを描画しようとしています。イメージを描画するときにイメージがロードされるように、配列を使用してイメージをプリロードします。私は再びChromeは画像が読み込まれていないと思っていますか?
<snip>
this.img = new Image();
img.src = images[id].src;
</snip>
これはFirefoxとOperaではなく、Chromeで動作する画像を使用する場所startDoingStuffをプリロードした後
var num = 0,
length = 3,
images = {
img1: '/img/img1.png',
img2: '/img/img2.png',
img3: '/img/img3.png'
}
for(var i in images)
{
var tmp = new Image();
tmp.src = images[i];
tmp.onload = function()
{
num ++;
if(num == length)
{
startDoingStuff();
}
}
}
が発射されます。クロムは画像がロードされていないと考えているでしょう。/
これを解決するために私が見つけたのは、読み込まれた画像を別の配列に置く(または元の配列を上書きする)ことで、参照を保持することです。
なぜChromeは画像をキャッシュに保存しているのか分かりません。
このスクリプトを発射している方法は? –
この例のように、私がsnipと呼ぶ場所はオブジェクト内にあり、オブジェクトはstartDoingStuff関数で作成されます。 – Johan
イメージのプリロードには、生のHTTPペイロードのロード以外の他の手順が必要です。 Chromeは圧縮された画像コンテンツをキャッシュに保存し、Image()をゼロから作成し、srcがデコードステップを即座に実行することはありません。あなたはそれを誤解している。