我需要通过Core包中的类读取Android包中AndroidLauncher中某些变量的值。 如下所示,我需要读取插页式变量的值。
Android上的AndroidLaucher:
public static int interstital=0;
public int ads() {
// TODO Auto-generated method stub
return interstital;
}
Core上的GameScreen:
System.out.println(AndroidLaucher.ads());
我试图实现一个接口,但它不支持静态方法。 如何在AndroidLauncher上将此变量的值返回到Core上的GameScreen?
由于
答案 0 :(得分:2)
不要使用静态方法,特别是在Android上,创建一个这样的广告界面:
public interface AdsManager {
public void showAds();
public Integer getInterstital();
}
制作一个Android实现:
public class AndroidAdsManager implements AdsManager{
private Integer interstital;
public AndroidAdsManager(){
interstital = 0;
}
@Override
public void showAds(){
//Show ads method
}
@Override
public Integer getInterstital(){
return interstital;
}
}
现在在您的Android启动器上创建实例并将java引用传递给您的游戏:
public class AndroidLauncher extends AndroidApplication {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
AdsManager androidManager = new AndroidAdsManager();
initialize(new MyGame(androidManager), config);
}
}
最后在你的游戏课上:
public class MyGame extends ApplicationAdapter {
private AdsManager adsManager;
public Mygame(AdsManager adsManager){
this.adsManager = adsManager;
}
}
现在,您可以在代码的任何位置使用adsManager,如果它在桌面,Android或ios上实例化,它将使用实现中的方法。
另外,正如评论中提到的:"当使用LibGDX并且您想从特定平台获取信息或控制组件时,请使用接口。请注意,您可能需要对其进行设计,以便即使他们不使用广告也能在所有平台上运行。"