4

PreloadJS を使用して画像のプリロードを学習しようとしています。

これは私が持っているものです:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <script src="easeljs-0.6.0.min.js"></script>
    <script src="preloadjs-0.3.0.min.js"></script>
    <script src="soundjs-0.4.0.min.js"></script>    
    <script>
        var stage, output, queue;
        function handleComplete() {
            var backgroundImage=new createjs.Bitmap("myImg");
            stage.addChild(backgroundImage);
            stage.update();
        }
        function init() {
            stage = new createjs.Stage("demoCanvas");
            queue = new createjs.LoadQueue();
            queue.installPlugin(createjs.Sound);
            queue.addEventListener("complete", handleComplete);
            queue.loadFile({id:"myImg", src:"Background.png"});
        }
    </script>
</head>
<body onLoad="init();">
    <canvas id="demoCanvas" width="1300" height="600">
        Your browser does not support canvas
    </canvas>
</body>
</html>

ページをロードすると、次のエラーが表示されます。

Access is denied: preloadjs-0.3.0.min.js, line 50 character 333

コール スタックをトレースしたところ、次の行からエラーが生成されていることがわかりました。

queue.loadFile({id:"myImg", src:"Background.png"});

どこで間違ったのか教えてもらえますか?

4

1 に答える 1

4

パスの種類 (絶対/相対) は重要ではありませんが、どこからロードするかは重要です。

デフォルトでは、PreloadJS は XHR (XMLHttpRequests) を使用してコンテンツを読み込もうとしますが、これはサーバー (file:// は機能しないため、代わりに localhost を使用する必要があります) に同じドメインからロードする場合にのみ機能します。引数として false を LoadQueue に渡して、タグを使用して画像をロードさせることができます。これにより、これらのエラーのほとんどを回避できます。


queue = new createjs.LoadQueue(false);

ただし、XHR ロードから通常発生するエラーはクロスオリジン エラーであり、「アクセスが拒否されました」ではありません。ファイルシステムからロードする場合は、ファイルが読み取り専用でないこと、または何らかの保護があることを確認してください。

于 2013-04-15T01:32:07.363 に答える