我使用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