1 回答

TA貢獻1883條經驗 獲得超3個贊
那里有一個循環關系......兩個不同的模塊相互依賴。我認為這行不通。
LibGDX 項目通常設置有一個獨立于平臺的核心模塊,然后是依賴于該核心的 android 和桌面模塊。這使您可以在桌面上非??焖俚剡M行迭代,而無需在大部分開發過程中一遍又一遍地編譯和安裝 Android 版本。
如果您確實不關心能夠在計算機上進行測試的好處,那么您根本不需要核心模塊。你只需將所有內容都放入 Android 即可。您現在嘗試做的事情實際上違背了擁有單獨核心模塊的目的。
不過,我建議將它們分開,以防您改變主意或決定移植到 iOS 等其他平臺。
如果您需要從 調用android特定代碼core,則不需要依賴該android模塊。您可以創建一個傳遞給游戲構造函數的接口。例如,如果你想顯示一個Android Toast,你可以在以下位置創建一個這樣的界面core:
public interface PlatformAdapter {
void showToast(String message);
}
在您的游戲中,從構造函數捕獲對它的引用,并在您希望 Android 執行某些操作時調用適配器:
private PlatformAdapter adapter;
public MyGame (PlatformAdapter adapter){
this.adapter = adapter;
}
void showToast(String message){
if (adapter != null) adapter.showToast(message);
}
然后在您的android模塊中,您可以將適配器傳遞到您的游戲中。例如:
public class AndroidLauncher extends AndroidApplication implements PlatformAdapter {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.r = 8;
config.g = 8;
config.b = 8;
config.a = 8;
config.useWakelock = true;
initialize(new MyGame(this), config);
}
@Override
public void showToast(String message){
runOnUiThread( new Runnable(){ public void run() {
Toast.makeText(this, message, Toast.LENGTH_SHORT);
}});
}
}
添加回答
舉報