这里我有一个非常简单的脚本。
stage = new createjs.Stage("myCanvas");
circle = new createjs.Shape();
circle.graphics.beginFill("red").drawCircle(0,0,40);
我的HTML
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" type="text/css" href="mainStyle.css">
<script src="mainScript.js"></script>
<script src="create.js"></script>
</head>
<body>
<canvas id="myCanvas" width=1000 height=500 ></canvas>
</body>
</html>
然而它不起作用。我收到这个错误:
“未定义createjs”
但在我的HTML中它链接到文件。还有什么可能导致这个吗?
答案 0 :(得分:5)
<script src="create.js"></script>
<script src="mainScript.js"></script>
您的代码需要执行AFTER,包括create.js
- 订购事宜。
答案 1 :(得分:4)
您的代码存在一些问题。
首先,要直接回答这个问题,在加载实例化脚本之前,必须加载构造createjs对象的库。改变你头脑中的脚本标签的顺序。
其次,您的实例化将在canvas元素添加到DOM之前执行。要解决这个问题,您需要监听文档的onload事件。然后执行你的代码。
第三,要使红色圆圈对象实际显示,您需要将其附加到画布,然后调用stage更新方法。
例如:
window.onload = function(){
stage = new createjs.Stage("myCanvas");
circle = new createjs.Shape();
circle.graphics.beginFill("red").drawCircle(0,0,40);
stage.addChild(circle);
stage.update();
}
答案 2 :(得分:0)
对于角度项目,上述答案可能不足以解决问题。我做了什么:
myAngularModule.service('preloadservice', function ($rootScope) {
if (typeof createjs === 'undefined') {
setTimeout(continueAfterWait, 500);
} else {
continueAfterWait();
}
var continueAfterWait = function () {
var queue = new createjs.LoadQueue();
//...
}
}