2013-04-25 2 views
1

내가 캔버스를 얻고, 난이 문자열 오류 얻을 무대 작성을 위해 보내방법은 easeljs에 오류를 반환 createjs.Stage

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

내 init 함수 :

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); 
     } 
    } 

특히이 블록 :

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

'n'값이 BitmapAnimation_initialize 인 경우 오류가 발생합니다. 이 코드를 Stage.js에서 찾았습니다. 파일이 easeljs의 rar와 함께 나타납니다.

답변

0

contentManager 코드를 주석 처리하면이 오류가 표시됩니까? 이상하게 보입니다.

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

id가 "testCanvas"인 DOM 요소가 실제로 있습니까? 처음 EaselJS 응용 프로그램을 구축 할 때 나는 아이디에 오타 ... 당신은 object의 프로토 타입 (그래서 내가했다)에 무언가를 추가 할 수 있습니다

0

있었기 때문에

나는이 오류가 발생했습니다. javascript for-each 루프는 "실제"와 프로토 타입 속성을 구별하지 않습니다. 이 라이브러리의

@developers : 더글라스 크록 퍼드 권장 (link 참조), 루프는 먼저 그 특성을 확인한다 :

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