1

这个问题是关于 JavaScript 中的 Box2D v2.2.1(通过 Emscripten 编译)。

一些结构喜欢b2Vec2并且b2BodyDef工作得很好。

我可以创建两者的实例,如下所示:

new Box2D.b2Vec2(0,0); // returns b2Vec {..} 
new Box2D.b2BodyDef(); // returns b2BodyDef {..}

但是,其他结构,例如b2MassDatab2Manifold不,请注意:

new Box2D.b2MassData(); // Error: "TypeError: undefined is not a function"
new Box2D.b2Manifold(); // Error: "TypeError: undefined is not a function"

在处理使用这些结构的类时,这会导致奇怪的行为:

// Setup
gravity = new Box2D.b2Vec2( 0, 10 );  // returns b2Vec {..} 
world = new Box2D.b2World( gravity ); // returns b2World {..} 

// Problem 1
bodyDef = new Box2D.b2BodyDef();   // returns b2BodyDef {..} 
body = world.CreateBody(bodyDef);  // returns b2Body {..} 
massData = body.GetMassData();     // "TypeError: Cannot read property 'ptr' 
                                   // of undefined."

// Problem 2
contact = world.GetContactList();    // returns b2Contact {..}
manifold = contact.GetManifold();    // returns Object {..} NOT b2Manifold {..}
normal = manifold.get_localNormal(); // "TypeError: Object #<Object> has 
                                     // no method 'get_localNormal'."

我怎样才能修复这些结构以及其他类似结构的使用?

4

1 回答 1

1

这很可能是因为这些类没有公共构造函数(甚至根本没有任何构造函数)。您需要在 Box2D 代码中添加构造函数。

于 2013-06-08T14:04:59.100 回答