Google 使用 libGDX 玩游戏服务
Google Play Game Services with libGDX
我已尝试将 Google Play 游戏服务与我的 libGDX 项目集成。
我在MainGame中使用过这段代码class:
public static PlayServices playServices;
public MainGame(PlayServices playServices)
{
this.playServices = playServices;
}
我将此代码放在 MainMenu class 中,我想在一些用户交互后显示登录 Google 的登录表单。
public static MainGame game;
public MainMenu(MainGame game)
{
this.game = game;
}
当我尝试 运行 应用程序时,出现以下错误:
Error:(77, 68) error: constructor MainMenu in class MainMenu cannot be
applied to given types; required: MainGame found: no arguments
reason: actual and formal argument lists differ in length
我猜你正试图从 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
class 构造函数的参数,并实现 ThatInterfaceClass
.
在此之后将参数放入您的 MyGdxGame class' 构造函数中。
public class MyGdxGame extends ApplicationAdapter {
public void MyGdxGame (ThatInterfaceClass interface) {
this.interface = interface;
}
// create etc... Other functions....
}
现在为了连接到 google 播放服务或解锁成就只需调用 interface.connectToGooglePlayServices()
这里有一个 link 可以更好地解释这一点。
https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code
编辑: 看来问题出在您未在此处提供的代码中。看看这个你应该如何创造的例子
e MainMenu class.
的实例
MainGame mainGame = new MainGame(playServices);
MainMenu mainMenu = new MainMenu(mainGame);
我相信你是这样构建 MainMenu class:
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: android 模块 中的 MainMenu class 是 核心模块?如果它不在 android 模块 中,则您不能使用 PlayServices class(也不能有实例)。也不要寻找解决方法,只需使用接口来启动连接。正如我在最初的回答中所说。
编辑 3:最终版本: 如果您之前已经介绍过该教程,对我们双方来说可能会更容易。
您在评论中发送的图片显示无法解析 playServices:
确保您没有输入任何错误内容。
确保PlayServices接口在核心模块中。
再读一遍教程。确保您正确添加了库、依赖项等。
教程告诉您创建 AndroidLauncher activity。但是 libGdx 默认创建它。
除此之外,如果不坐在你的椅子上,我无法进一步帮助你。对于您的下一个问题,请提供更多信息。还有很多。
我已尝试将 Google Play 游戏服务与我的 libGDX 项目集成。
我在MainGame中使用过这段代码class:
public static PlayServices playServices;
public MainGame(PlayServices playServices)
{
this.playServices = playServices;
}
我将此代码放在 MainMenu class 中,我想在一些用户交互后显示登录 Google 的登录表单。
public static MainGame game;
public MainMenu(MainGame game)
{
this.game = game;
}
当我尝试 运行 应用程序时,出现以下错误:
Error:(77, 68) error: constructor MainMenu in class MainMenu cannot be applied to given types; required: MainGame found: no arguments reason: actual and formal argument lists differ in length
我猜你正试图从 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
class 构造函数的参数,并实现 ThatInterfaceClass
.
在此之后将参数放入您的 MyGdxGame class' 构造函数中。
public class MyGdxGame extends ApplicationAdapter {
public void MyGdxGame (ThatInterfaceClass interface) {
this.interface = interface;
}
// create etc... Other functions....
}
现在为了连接到 google 播放服务或解锁成就只需调用 interface.connectToGooglePlayServices()
这里有一个 link 可以更好地解释这一点。
https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code
编辑: 看来问题出在您未在此处提供的代码中。看看这个你应该如何创造的例子 e MainMenu class.
的实例MainGame mainGame = new MainGame(playServices);
MainMenu mainMenu = new MainMenu(mainGame);
我相信你是这样构建 MainMenu class:
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: android 模块 中的 MainMenu class 是 核心模块?如果它不在 android 模块 中,则您不能使用 PlayServices class(也不能有实例)。也不要寻找解决方法,只需使用接口来启动连接。正如我在最初的回答中所说。
编辑 3:最终版本: 如果您之前已经介绍过该教程,对我们双方来说可能会更容易。 您在评论中发送的图片显示无法解析 playServices:
确保您没有输入任何错误内容。
确保PlayServices接口在核心模块中。
再读一遍教程。确保您正确添加了库、依赖项等。
教程告诉您创建 AndroidLauncher activity。但是 libGdx 默认创建它。
除此之外,如果不坐在你的椅子上,我无法进一步帮助你。对于您的下一个问题,请提供更多信息。还有很多。