0

我又遇到了一个问题,我只是不知道如何解决。问题是我应该如何将数据从我的 cocos2d-x 应用程序传递回 Android 和 iOS 调用应用程序?

对于 Android,我想当应用程序以 JNI 结尾时我会使用活动结果,但是如何在 iOS 上实现这一点?

让我们举一个不太实际的例子:我在 Android 和 iOS 上都有一个现有的应用程序。这个应用程序保存着不同游戏的分数,你可以从这个应用程序调用其他游戏应用程序(也是我写的)。当被调用的游戏结束时,主应用程序应该取回分数(如活动结果)。

如果你们能给我一些指点,我将不胜感激。

4

2 回答 2

0

仅仅创建一个排行榜服务器会不会有点过头了?被调用的游戏只是将数据发布到服务器。然后你的排行榜应用程序从服务器读取数据。

于 2012-10-27T17:59:13.217 回答
0

在android中你可以这样做:(可能在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 回答