2017-09-13 14 views
0

Google Playゲームサービスで働いていたのCocos2d-xプロジェクトで作業していますが、Google Playを統合しようとしたときにいくつかの問題が発生しましたサービスをC++で実行してから、JAVAに変更することにしました。JavaからC++関数を呼び出すJNI - Cocos2d-x

ボタンにユーザークリック「友達を招待」、 方法startGameは() JNIで正常に呼び出され

が、何も起こっていません!次のシーンは表示されません。

C++コード:

private native void startGame(); 
public void inviteFriend() { 

    startGame(); 

    // launch the player selection screen 
    // minimum: 1 other player; maximum: 3 other players 
    //Intent intent = Games.RealTimeMultiplayer.getSelectOpponentsIntent(mGoogleApiClient, 1, 1); 
    //((Activity) GooglePlayServices.ctx).startActivityForResult(intent, RC_SELECT_PLAYERS); 

} 

C++とJavaの間の通信は結構ですが、なぜ私は行くことはできません。

extern "C" 
{ 
JNIEXPORT void JNICALL Java_sonar_systems_frameworks_GooglePlayServices_GooglePlayServicesGameHelper_startGame(JNIEnv* env, jobject thiz); 
}; 

JNIEXPORT void JNICALL Java_sonar_systems_frameworks_GooglePlayServices_GooglePlayServicesGameHelper_startGame(JNIEnv* env, jobject thiz) 
{ 

    MenuScene::goToScene(); 

} 
void MenuScene::goToScene() { 

    //Going to the next scene 
    Scene * gameScene=GameScene::createScene(); 
    TransitionFade*transition=TransitionFade::create(TRANSITION_TIME, gameScene); 
    //Replace the current Scene with New Game Scene 
    Director::getInstance()->replaceScene(transition); 
} 

Javaコード上で関数が呼び出された場所から次のシーンに、コードは正しいです!

私は問題を修正し、

答えて

0

をありがとう彼はCocosThreadで実行する必要があるように、ので、私はそのようにやったようだ:

Director::getInstance()->getScheduler()->performFunctionInCocosThread([&](){ 
     MenuScene::goToScene(); 
    }); 
関連する問題