2013-10-13 40 views
0

請看看下面的代碼:使用WinJS.Class和訪問屬性

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

我試圖在run方法中訪問的公共屬性widthheight。我收到消息,this.width未定義。

我該如何訪問它們?

回答

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

現在工作:)