答えはPreloadJsにあると思いますが、単純化するために、コードでそれをいじくり回す作業を削除しました。最も重要な部分は次のとおりです。
let stage = new createjs.Stage('easel'),
bitmap = new createjs.Bitmap('http://www.skrenta.com/images/stackoverflow.jpg');
stage.addChild(bitmap);
stage.update();
さて、問題は、これが私のコードを初めて実行したときに得られるものです。
何も間違ってない。
ただし、最初にアクセスしたときは、画像はまだキャッシュされておらず、表示されません。ページをハードリセットした場合も同じことが起こります(ctrl + r
Windowsの場合)。初めてページにアクセスしたときは画像がないため、これは明らかに大きな問題です。これが私が試したことです:
PreloadJs、これが解決策になる可能性が最も高いですが、これまでのコードでは機能していません。
これは私の現在の
PreloadJS
コードです:queue.on('complete', draw, this) queue.load(imageUrl) function draw() { let bitmap = new createjs.Bitmap(imageUrl); stage.addChild(bitmap); stage.update(); }
私のコードをトリガーします
onload
。問題はまだ発生します。- のような遅延
setTimeout
。非常にハックであることに加えて、大幅な遅延があっても、一定の確率でしか修正されません。 - この回答のようなもの。これはハード リセットには機能しますが、キャッシュをクリアすると、ロードに時間がかかりすぎて、基本的に最初のロードを修正するというアイデア全体が台無しになりました。
したがって、基本的に、これらのソリューションのいくつかは時々機能しますが、一部はハックであり、すべてがパーセンテージまたはそれ以下の時間しか機能しません。最善の解決策は何ですか?
1 つのことは、ページのサイズを変更するなどの操作を行うと、画像が表示されることです。サンプル コードでこれを再現できませんでした。これは、最初に実行したときにstage.update
表示する準備ができていなかったため、表示されなかったために発生したと思います。繰り返しますが、1 秒後にもう一度実行するだけstage.update
では十分ではありません。
注:回答がなく、1年前であり、詳細を提供できず、コメントで提供された唯一の解決策が失敗したため、これがこの質問の複製であるとは思いません。