我正在尝试使用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"});
你能告诉我哪里出错了吗?
答案 0 :(得分:4)
路径类型(绝对/相对)无关紧要,无论您从may加载它的位置。
默认情况下,PreloadJS将尝试使用XHR(XMLHttpRequests)加载内容,XHR仅在加载服务器时起作用(file://不起作用,您应该使用localhost),并且来自同一个域。您可以尝试将false作为参数传递给LoadQueue,以使其使用标记加载图像,从而解决大多数错误。
queue = new createjs.LoadQueue(false);
您通常从XHR加载中获得的错误是跨源错误,但不是“访问被拒绝”。如果从文件系统加载,请确保该文件不是只读文件,或具有某种保护。