0

请看下面的代码:

(function() {
    "use strict";

    var game = WinJS.Class.define(
        null,
        {
            width: {
                get: function() {
                    return window.innerWidth;
                }
            },

            height: {
                get: function() {
                    return window.innerHeight;
                }
            },

            run: function() {
                // this.width and this.height is undefined
                Crafty.init(this.width, this.height);
                Crafty.canvas.init();
            }
        }
    );

    WinJS.Namespace.define("MyNamespace", {
        Game: new game()
    });

    window.addEventListener('load', MyNamespace.Game.run);
})();

我正在尝试访问公共属性width和方法heightrun。我收到消息,这this.width是未定义的。

我怎样才能访问它们?

4

1 回答 1

0

最后我找到了解决方案。似乎WinJS.Namespace.define想要有一个类定义而不是实例化对象。我将代码更改为:

(function() {
    "use strict";

    var gameClass = WinJS.Class.define(
        null,
        {
            width: {
                get: function() {
                    return window.innerWidth;
                }
            },

            height: {
                get: function() {
                    return window.innerHeight;
                }
            },

            run: function() {
                // this.width and this.height is undefined
                Crafty.init(this.width, this.height);
                Crafty.canvas.init();
            }
        }
    );

    var game = new gameClass();

    WinJS.Namespace.define("MyNamespace", {
        Game: {
            get: function() {
                return game;
            }
        }
    });

    window.addEventListener('load', function() {
        MyNamespace.Game.run();
    });
})();

现在它正在工作:)

于 2013-10-14T19:11:17.570 回答