从核心项目调用特定于平台的代码

时间:2015-08-20 11:48:29

标签: libgdx admob

我刚刚使用this guide在我的游戏中为Android实施了广告。 它工作正常,我的核心项目中有一个Android Activity实现的接口。

但是我的问题是你需要将这个实现的接口发送到核心项目,然后将它作为参数传递给你的第一个屏幕,你可以在那里使用它,例如:

public MyGdxGame(PlatformSpecific ps) //Android class that handle fb-login and ads
{
    this.ps = ps;
}

@Override
public void create ()
{
   setScreen(new LoginScreen(this, ps);
}

当我在LoginScreen中使用fb-login时,这很好,但我希望能够通过调用{在其他屏幕上(在游戏完成后)创建我的广告{1}} - 界面中的方法。

我是否必须继续在所有屏幕之间传递createAd,以便我可以在屏幕中使用它,这种屏幕很少使用,或者是否有某种方法从我的屏幕进入此界面而不传递它到构造函数?有点像你发起一个对象,例如:

ps

或者LibGdx有一些库可能支持这种情况吗?最糟糕的情况我可以在所有构造函数之间传递private PlatformSpecific ps = new PlatformSpecific(); ,但感觉就像一个非常难看的解决方案。

1 个答案:

答案 0 :(得分:0)

解决方案1: 将PlatformSpecific存储在全局静态变量中。这允许您访问代码中的任何位置,而无需在每个构造函数中传递它。

解决方案2: 拥有MyPlatformContext类,可以访问PlatformSpecific。然后将此MyPlatformContext对象传递给屏幕构造函数。如果稍后扩展特定于平台的代码,则无需更改屏幕构造函数。只需编辑MyPlatformContextMyPlatformContext类。

伪代码:

class MyPlatformContext {
    private FacbookPlatform fb;
    private AdmobPlatform admob

    FacbookPlatform getFacebook() {
        return fb;
    }
    ...
}