2

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

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 中,它链接到文件。还有其他可能导致这种情况的原因吗?

4

3 回答 3

5
<script src="create.js"></script>
<script src="mainScript.js"></script>

您的代码需要在包括之后执行create.js- 订单很重要。

于 2013-02-22T04:03:17.393 回答
4

您的代码有几个问题。

首先,要直接回答这个问题,您必须先加载构造 createjs 对象的库,然后再加载实例化它的脚本。更改您脑海中的脚本标签的顺序。

其次,您的实例化将在 canvas 元素添加到 DOM 之前执行。要解决此问题,您需要侦听文档的 onload 事件。然后执行你的代码。

第三,要让红色圆圈对象真正显示出来,您需要将它附加到画布上,然后调用阶段更新方法。

前任:

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();
}
于 2013-02-22T04:36:08.737 回答
0

对于角度项目,上述答案可能不足以解决问题。我做了什么:

myAngularModule.service('preloadservice', function ($rootScope) {

  if (typeof createjs === 'undefined') {
    setTimeout(continueAfterWait, 500);
  } else {
    continueAfterWait();
  }

  var continueAfterWait = function () {
    var queue = new createjs.LoadQueue();
    //...
  } 
}
于 2015-01-29T10:17:25.043 回答