1 回答
TA贡献1883条经验 获得超3个赞
那里有一个循环关系......两个不同的模块相互依赖。我认为这行不通。
LibGDX 项目通常设置有一个独立于平台的核心模块,然后是依赖于该核心的 android 和桌面模块。这使您可以在桌面上非常快速地进行迭代,而无需在大部分开发过程中一遍又一遍地编译和安装 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);
}});
}
}
添加回答
举报