1

キャンバスを取得し、ステージを作成するために送信すると、次の文字列エラーが発生します。

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 v0.6.0 の rar が付属しています。

4

3 に答える 3

0

のプロトタイプに何かを追加した可能性がありますobject(私もそうしました)。JavaScript の for-each ループは、「実際の」プロパティとプロトタイプ プロパティを区別しません。

このライブラリの @developers: Douglas Crockford が推奨するように (リンクを参照)、ループは最初にそのプロパティをチェックする必要があります。

for (n in ls) {
  if (ls.hasOwnProperty(n)) {
    o = ls[n];
    o.t.addEventListener(n, o.f);
  } 
}
于 2014-08-29T13:01:01.393 に答える
0
canvas = document.getElementById("testCanvas");

ID「testCanvas」のDOM要素は実際にありますか?

ID にタイプミスがあったため、最初の EaselJS アプリをビルドするときにこのエラーが発生しました...

于 2013-06-19T14:37:44.947 に答える