2011-12-18 24 views
0

我使用RequireJs和Backbone为javascript游戏构建了文件结构。现在我有问题将它与Box2DWeb结合起来。如何将Box2dWeb和RequireJs结合在一起

// Filename: game/controller/arena.js 
define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    '_69_', 
    'game/controller/object', 
    'game/model/arena', 
    'game/view/arena', 
    'box2d' 
    ], function($, _, Backbone, _69_, Object, Model, View, Box2D){ 
     var ArenaController = Object.extend ({ 
      init : function(){ 
       this._super(Model, View); 
       this.world = new b2World(
        new b2Vec2(0, 10) //gravity 
        , true     //allow sleep 
        ); 
       this.appView; 
       this.loops=0; 
      }, 
      start : function(){ 
       _69_.l('start') 
      }, 
      update :function(){ 
       _69_.l('update') 
      }, 
      stop : function(){ 
       _69_.l('stop') 
      } 
     }); 

     return new ArenaController; 
    }); 

但在控制台中,我得到的b2World没有定义。我应该怎么做才能使它工作?

回答

1

我不知道box2d,但box2world确实不存在于该上下文中,除非它是全局对象。

我相信在这里,你会需要它的命名空间,如果它包含在你的required.js依赖定义的Box2D的参考,你可以使用

new Box2D.b2World(...); 
0

你应该尝试包括“Box2D的”中需要你的main.js文件。 Box2D将作为一个全局对象加载,稍后您可以使用它。

require([ 
    'app', 
    'box2d' 
], function(app){ 
    app.init(); 
}); 

你不应该提到它的功能,或者你可以将其列为“忽略”:

require([ 
    'app', 
    'box2d' 
], function(app, ignore){ 
    app.init(); 

}); 

在Chrome控制台,您可以键入Box2D的,你应该看到它弹出如下一个全局对象。一旦你知道它的全球性,你就可以开始使用它。

然后在你的ArenaController你可以列出“Box2D的”在定义数组,但不是在功能:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    '_69_', 
    'game/controller/object', 
    'game/model/arena', 
    'game/view/arena', 
    'box2d' 
    ], function($, _, Backbone, _69_, Object, Model, View) { 
     var ArenaController = Object.extend ({ 
      init : function(){ 
       this._super(Model, View); 
       var b2World = Box2D.Dynamics.b2World; //Box2D should be available as a global 
       this.world = new b2World(
        new b2Vec2(0, 10) //gravity 
        , true     //allow sleep 
        ); 
       this.appView; 
      } 
     }); 

     return new ArenaController; 
    }); 
相关问题