LIBGDX - 访问Android包变量

时间:2016-04-26 11:26:54

标签: java eclipse libgdx

我需要通过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?

由于

1 个答案:

答案 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并且您想从特定平台获取信息或控制组件时,请使用接口。请注意,您可能需要对其进行设计,以便即使他们不使用广告也能在所有平台上运行。"