使用libGDX的Google Play游戏服务

时间:2016-02-02 18:48:11

标签: libgdx google-play-games

我尝试将Google Play游戏服务与我的libGDX项目集成。

我在MainGame类中使用了这段代码:

public static PlayServices playServices;

public MainGame(PlayServices playServices)
{
    this.playServices = playServices;
}

我将此代码放在MainMenu类中,我想在用户交互后显示登录Google的登录表单。

public static MainGame game;

public MainMenu(MainGame game)
{
    this.game = game;
}

当我尝试运行应用时,出现以下错误:

  

错误:(77,68)错误:MainMenu类中的构造函数MainMenu不能   适用于给定类型;必需:MainGame发现:没有参数   原因:实际和正式的参数列表长度不同

1 个答案:

答案 0 :(得分:1)

我猜你试图从Android模块向你的核心模块发送一个PlayServices实例。如果不是这种情况,请更正我并提供更多代码,因为我无法从您提供的信息中做出任何其他信息。

您需要使用界面。

在核心模块中创建一个界面。其中包含必要的功能,如connectToGooglePlayServices(),unlockAchivement()等。所有Android专用的功能。

public class AndroidLauncher extends AndroidApplication implements ThatInterfaceClass {
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        initialize(new MyGdxGame(this), config);
    }
    @Override
    public void connectToGooglePlayServices() {
        //connect to play services here
    }

    @Override
    public void unlockAchivement() {
        // unlock achivement etc.
    }

}

此处的重要部分是将此作为参数提供给MyGdxGame类构造函数,并实现ThatInterfaceClass

之后在MyGdxGame类的构造函数中添加一个参数。

public class MyGdxGame extends ApplicationAdapter {
    public void MyGdxGame (ThatInterfaceClass interface) {
        this.interface = interface;
    }

    // create etc... Other functions....
}

现在,为了连接到Google Play服务或解锁成就,请致电interface.connectToGooglePlayServices()

这是一个更好地解释这一点的链接。

https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code

编辑:似乎问题出现在您未提供的代码中。看看你应该如何创造这个例子 一个MainMenu类的实例。

MainGame mainGame = new MainGame(playServices);
MainMenu mainMenu = new MainMenu(mainGame);

我相信你正在构建MainMenu类:

MainMenu mainMenu = new MainMenu();

只要你有这个构造函数:

public MainGame(PlayServices playServices)
{
    this.playServices = playServices;
}

如果没有PlayServices参数,则无法使用构造函数。但是你可以删除你的构造函数或删除PlayServices参数并像这样使用它:

MainMenu mainMenu = new MainMenu();
mainMenu.setPlayServices(playServices);

这是另一个像你的问题:

"Actual or formal argument lists differs in length"

编辑2 :您的MainMenu课程是否位于核心模块 android模块?如果它不在 android模块中,则不能使用PlayServices类(也不能有实例)。另外,不要寻找解决方法只需使用接口来启动连接。正如我在最初的答案中所说的那样。

编辑3:最后:如果你之前已经讲过这个教程,那对我们两个人来说可能会更容易。 您在评论中发送的图片说无法解析playServices:

  1. 确保没有输入任何错误。

  2. 确保PlayServices接口位于核心模块中。

  3. 再次阅读教程。确保正确添加了库,依赖项等。

  4. 本教程告诉您创建AndroidLauncher活动。但是libGdx默认创建它。

  5. 除此之外,如果不坐在椅子上,我无法帮助你。有关您的下一个问题,请提供更多信息。还有很多。