即使我链接到该文件,我收到错误“createjs未定义”

时间:2013-02-22 03:54:38

标签: javascript easeljs createjs

这里我有一个非常简单的脚本。

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中它链接到文件。还有什么可能导致这个吗?

3 个答案:

答案 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();
    //...
  } 
}