1

我将 Akka 框架与 jMonkeyEngine (jME3) 一起用于我的小 scala/java 游戏。通过调整一些Akka 调度程序的魔法,我设法在与 jME3 的主循环线程相同的线程中运行了一个专用的 Actor。为了让actor能够访问应该扩展以使用jME3创建游戏的SimpleApplication类的受保护变量,我认为创建一个继承类SimpleApplication并混合特征Actor的类会很整洁。像这样的东西:

JmeActor extends SimpleApplication with Actor

问题是 SimpleApplication 和 Actor 都有一个冲突的上下文变量。目前,我已经将 SimpleApplication 的上下文变量重命名为jmeContext并重新编译了 jME3。结果运行得很好,但对我来说,这个设计似乎被打破了,因为任何进一步的 jME3(甚至 Akka)版本都需要我再次手动完成这个重构。开发团队甚至可能(尽管不太可能)进一步修改 SimpleApplication,从而使这种冲突避免技术变得更加困难。

谁能看到一个简单的解决方案?

4

1 回答 1

1

我的直觉表明,将 Actor 实例与游戏引擎的“主”类这样的丰富类紧密结合可能不是一个好的设计选择。我建议进行子类SimpleApplication化,以便您需要的所有功能都通过公共方法公开,然后在您的演员中保留对它的引用;我的猜测是,您希望能够通过向参与者发送消息来影响游戏引擎,从而启用。

于 2013-05-11T14:04:58.350 回答