1 回答

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
那里有一個(gè)循環(huán)關(guān)系......兩個(gè)不同的模塊相互依賴。我認(rèn)為這行不通。
LibGDX 項(xiàng)目通常設(shè)置有一個(gè)獨(dú)立于平臺(tái)的核心模塊,然后是依賴于該核心的 android 和桌面模塊。這使您可以在桌面上非常快速地進(jìn)行迭代,而無需在大部分開發(fā)過程中一遍又一遍地編譯和安裝 Android 版本。
如果您確實(shí)不關(guān)心能夠在計(jì)算機(jī)上進(jìn)行測(cè)試的好處,那么您根本不需要核心模塊。你只需將所有內(nèi)容都放入 Android 即可。您現(xiàn)在嘗試做的事情實(shí)際上違背了擁有單獨(dú)核心模塊的目的。
不過,我建議將它們分開,以防您改變主意或決定移植到 iOS 等其他平臺(tái)。
如果您需要從 調(diào)用android特定代碼core,則不需要依賴該android模塊。您可以創(chuàng)建一個(gè)傳遞給游戲構(gòu)造函數(shù)的接口。例如,如果你想顯示一個(gè)Android Toast,你可以在以下位置創(chuàng)建一個(gè)這樣的界面core:
public interface PlatformAdapter {
void showToast(String message);
}
在您的游戲中,從構(gòu)造函數(shù)捕獲對(duì)它的引用,并在您希望 Android 執(zhí)行某些操作時(shí)調(diào)用適配器:
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);
}});
}
}
添加回答
舉報(bào)