0

所以我在将 scoreloop 集成到我的游戏中时遇到了一些问题。我使用用 c++ 编写的 cocos2dx 并使用 ndk。主应用程序类是从活动而不是从 android.app.application 派生的。在布局中添加一个按钮并使用它来调出记分牌或提交乐谱作品,但它没有连接到互联网。我在这里找到了解决方案:scoreloop support forum或更具体地说

是的,使用 libgdx 似乎是个问题。libgdx 带来了它自己的 Application 类,它实际上是从 Android 的 Activity 派生的,而不是 Application。来自 libgdx 的 helloworld 示例根本没有(Android)应用程序类,这里是如何添加一个:

创建一个扩展 android.app.Application 的新类(不是 com.badlogic.gdx.backends.android.AndroidApplication)

在 AndroidManifest.xml 中找到创建的类的标签和名称作为属性: android:name="YourApplication"

将方法 public void onCreate() 添加到该类并在那里初始化 Scoreloop。

所以接下来我创建了这个:

public class scoreLooped extends android.app.Application{
public void onCreate(Bundle savedInstanceState){
    ScoreloopManagerSingleton.init(this, "redacted");
} 
 public void onTerminate()
 {
     ScoreloopManagerSingleton.destroy();
 }

}

我从我的主要活动类创建这个类,如下所示:

public class wordsweeper extends Cocos2dxActivity implements OnScoreSubmitObserver{
private Cocos2dxGLSurfaceView mGLView;
private static scoreLooped a;

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    wordsweeper.a = new scoreLooped();
    //Set the observer equal to an instance of this class
    ScoreloopManagerSingleton.get().setOnScoreSubmitObserver(this);

最后一行是它因错误“引起:java.lang.IllegalStateException:必须首先调用 ScoreloopManagerSingleton.init()”而崩溃的地方,所以显然我的 scoreLooped 类没有调用 scoreloopmanager。我曾考虑过使用 scorelooped 类来提交、检索记分牌,但如果不扩展活动,我似乎无法做到这一点。我对java很陌生,所以我可能会遗漏一些明显的东西,所以如果有人能指出我正确的方向,那就太好了。

4

1 回答 1

0

看来您需要创建自己的 Application 类并ScoreloopManagerSingleton.init()在那里调用。请参阅此处的答案,其中引用了一些示例文档:http: //support.scoreloop.com/discussions/problems/789-illegalstateexception-scoreloopmanagersingletoninit-can-be-call-only-once

于 2012-04-16T20:09:50.537 回答