0

そのため、scoreloop をゲームに統合する際に問題が発生しています。C++ で記述され、ndk を使用する cocos2dx を使用します。メイン アプリケーション クラスは、android.app.application からではなく、アクティビティから派生します。レイアウトにボタンを追加し、それを使用してスコアボードを表示したり、スコアを送信したりすることはできますが、インターネットには接続しません。ここでこれに対する解決策を見つけました:scoreloopサポートフォーラムまたはより具体的には

はい、libgdx の使用が問題のようです。libgdx は、Application ではなく、Android の Activity から実際に派生した独自の Application クラスをもたらします。libgdx の helloworld サンプルには、(Android) Application クラスがまったく含まれていません。追加する方法は次のとおりです。

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-called-only-once

于 2012-04-16T20:09:50.537 に答える