0

所以我一直在学习如何使用jme3引擎和SDK。我开始在扩展 SimpleApplication 以进一步面向对象的应用程序的主应用程序文件之外工作。

我的问题是这个..如何正确初始化物理对象?如.. 您创建一个 Player 类,该类具有一个名为 phyiscs 的 BulletAppState 对象,但首先没有分配值!它是在构造函数中分配的。

class Player {
     BulletAppState physics;

     public Player(BulletAppState physicsState) {
          this.physics = physicsState; // State should now be initialized when 
                                       // this constructor is is called
     }
}

然后,在主类文件中

class Main extends SimpleApplcation {

     Player player;
     BulletAppState physics;

     public static void main(String[] args) {
          Main app = new Main();
          app.start();
     }

     @Override
     public void simpleInitApp() {
          physics = new BulletAppState();
          physics.setThreadingType(BulletAppState.ThreadingType.PARALLEL);
          stateManager.attach(physics);

          player = new Player(); 
     }
}

我没有得到我期望的结果。

输出结果为:

主类物理状态启用?真的

玩家类物理状态已启用?错误的

4

2 回答 2

0

大提示: stateManager.attach() 将事物添加到队列中!

在调用 simpleInitApp 期间初始化的唯一 appStates 是那些传入构造函数的new Main(appStates...)

我在我的面向对象的游戏项目中很好地做到了这一点:

Main app = new Main( new StatsAppState(), new FlyCamAppState(), new DebugKeysAppState(), physics );

它可以很好地传递给 simpleInitApp() 调用中的所有对象。

于 2014-03-07T21:54:53.753 回答
0

只需physics在您的构造函数中传递即可像这样Player()进行初始化。BulletAppState

player = new Player(physics);
于 2013-08-28T04:39:49.127 回答