2013-04-25 69 views
1

当我在画布上,并发送了创建阶段,我得到这个字符串错误:方法createjs.Stage返回与easeljs错误

Uncaught TypeError: Cannot call method 'addEventListener' of undefined. 

我的初始化函数:

function init() { 
    canvas = document.getElementById("testCanvas"); 

    stage = new createjs.Stage(canvas); 
    screen_width = canvas.width; 
    screen_height = canvas.height; 

    contentManager = new ContentManager(); 
    contentManager.SetDownloadCompleted(startGame); 
    contentManager.StartDownload(); 
} 

块的代码给出的错误是:

p.enableDOMEvents = function(enable) { 
    if (enable == null) { enable = true; } 
    var n, o, ls = this._eventListeners; 
    if (!enable && ls) { 
     for (n in ls) { 
      o = ls[n]; 
      o.t.removeEventListener(n, o.f); 
     } 
     this._eventListeners = null; 
    } else if (enable && !ls) { 
     var t = window.addEventListener ? window : document; 
     var _this = this; 
     ls = this._eventListeners = {}; 
     ls["mouseup"] = {t:t, f:function(e) { _this._handleMouseUp(e)} }; 
     ls["mousemove"] = {t:t, f:function(e) { _this._handleMouseMove(e)} }; 
     ls["dblclick"] = {t:t, f:function(e) { _this._handleDoubleClick(e)} }; 
     t = this.canvas; 
     if (t) { ls["mousedown"] = {t:t, f:function(e) { _this._handleMouseDown(e)} }; } 

     for (n in ls) { 
      o = ls[n]; 
      o.t.addEventListener(n, o.f); 
     } 
    } 

特别是这个块:

for (n in ls) { 
     o = ls[n]; 
     o.t.addEventListener(n, o.f); 
    } 

当'n'的值是BitmapAnimation_initialize时,会给出错误。我发现此代码到Stage.js中,该文件伴随着easeljs的rar v0.6.0

回答

0

如果您注释掉contentManager代码,您是否看到此错误?看起来很奇怪。

0
canvas = document.getElementById("testCanvas"); 

你真的有一个ID为“testCanvas”的DOM元素吗?

我建设我的第一EaselJS应用程序时得到这个错误,因为我曾在ID错字......

0

你可能有一些添加到object原型(所以做我)。 javascript for-each循环没有区分“真实”和原型属性。这个库的

@developers:建议由Douglas Crockford的(见link),循环应先检查其属性:

for (n in ls) { 
    if (ls.hasOwnProperty(n)) { 
    o = ls[n]; 
    o.t.addEventListener(n, o.f); 
    } 
}