我使用Akka框架和jMonkeyEngine(jME3)一起用于我的小型Scala/java游戏。通过调整一些Akka dispatcher magic我设法在jME3的主循环线程所在的同一线程中运行一个专用的actor。为了让演员能够访问SimpleApplication类的受保护变量,我们应该扩展这个变量以创建一个带有jME3的游戏,我认为创建一个继承类SimpleApplication并混合性能演员的类将会很整洁。事情是这样的:与Akka混合演员特质与基类碰撞
JmeActor extends SimpleApplication with Actor
的问题是,无论SimpleApplication和演员有背景变量,冲突起来。目前,我已将SimpleApplication的上下文变量重命名为jmeContext并重新编译了jME3。结果工作得很好,但设计似乎打破了我,因为任何进一步发布的jME3(或Akka甚至)将需要我再次手动重新进行此重构。甚至有可能,尽管可能不太可能,开发团队进一步修改了SimpleApplication,使得这种冲突避免技术变得更加困难。
任何人都可以看到一个简单的解决方案呢?
为什么组成不工作? – 2013-05-11 13:13:08
你的意思是创建一个演员作为JmeActor的一个字段,而不是与Actor混合?你将如何设置这个actor的接收函数来访问JmeActor的私有字段?这对你来说可能是微不足道的,但现在我不清楚这一点。 – gsimard 2013-05-11 13:40:33
不,我的意思是让JMEActor扩展Actor,但是在其中有一个SimpleApplication字段。然后这个actor接收消息并调用SimpleApplication上的方法。 – 2013-05-11 16:01:42