0

もう一度問題が発生しましたが、解決方法がわかりません。問題は、cocos2d-xアプリからAndroidおよびiOSの呼び出しアプリケーションにデータを戻す方法です。

Androidの場合、アプリがJNIで終了するときにアクティビティ結果を使用すると思いますが、iOSでこれを実現するにはどうすればよいですか?

それほど現実的ではない例を見てみましょう。AndroidとiOSの両方に既存のアプリケーションがあります。このアプリケーションはさまざまなゲームのスコアを保持しており、このアプリケーションから、他のゲームアプリケーション(これも私が作成したもの)を呼び出すことができます。呼び出されたゲームが終了すると、メインアプリケーションはスコアを取り戻す必要があります(アクティビティの結果など)。

皆さんが私にいくつかの指針を与えることができれば、私はそれを本当に感謝します。

4

2 に答える 2

0

リーダーボードサーバーを作成するだけではやり過ぎでしょうか?呼び出されたゲームは、サーバーにデータを投稿するだけです。次に、リーダーボードアプリがサーバーからデータを読み取ります。

于 2012-10-27T17:59:13.217 に答える
0

アンドロイドでは次のようなことができます:(おそらくiOSでも同じことができます:))

たとえば、データを含むクラスを返したいと思います。だから私は作成します /cocos2d-2.0-x-2.0.4/cocos2dx/platform/android/java/src/com/example (このクラスをあなたのプロジェクトに入れてみてください私はそれをチェックしません)

package com.example;

public class SimpleClass {

    private int a;
    private int b;

    public SimpleClass(int a, int b) {
    this.a = a;
    this.b = b;

    }
}

これで、Cocos2dxActivityに、終了時またはその他のアクション時に実行されるネイティブメソッドを追加できます。

例えば private static native SimpleClass nativeReturner();

onStopまたは他の方法で実行できます。SimpleClassを返します

次に、プロジェクトでjni / main.cppにJNI関数を含める必要があるため、次のように関数を追加できます。

jobject Java_org_cocos2dx_lib_Cocos2dxActivity_nativeReturner(JNIEnv* env, jobject obj)
{
    jint i;
    jobject object;
    jmethodID constructor;
    jclass cls;
    cls = env->FindClass("com/example/SimpleClass");

    constructor = env->GetMethodID(cls, "<init>", "(II)V");
            //Here you initialize your class pass here something
    object = env->NewObject(cls, constructor, 5, 12);
    return object;
} 

この単純な関数は、SimpleClassを作成し、5,12で初期化します。もちろん、ここで、cocosゲームからオブジェクトを渡すことができます。

たとえば、フォームCCAplicationを継承するクラスでは、渡したいデータを格納できます。次に、CCApplication :: sharedApplication()を使用するか、独自の静的メソッドを作成できます。

もちろん、iOSやその他のプラットフォームでは、同じようにする必要があります。

于 2012-12-12T11:05:58.417 に答える