がおまる開発ブログ

cocos2d-xやlevelhelperを使って iPhone/Androidアプリの作り方を解説します

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Javaからcocos2d-xにコマンドを送る

前回はc++→Javaでつぶやきをするという機能をご紹介しました。
今度はその逆でJava→c++に対して命令を実行するやり方をご紹介しましょう!

Eclipse側にあるmain.cppを編集します
s_20130218_0.png

// Java_[パッケージ名]_[メソッド名が書かれているjava名]_[メソッド](JNIEnv* env, jobject thiz,[引数])
// 今回はorg.cocos2dx.libパッケージにあるCocos2dxActivity.javaに定義したjniTest(int no)にしました
// パッケージ名の「.(ドット)」は「_(アンダーバー)」に置き換えるのがルールのようです。
void Java_org_cocos2dx_lib_Cocos2dxActivity_jniTest(JNIEnv* env, jobject thiz, jint no)
{
// cocos2d-x側で実行したいやつを書く
HelloWorld::sharedScene()->jniTest(no);
}

s_20130218_1.png


private static native void jniTest(int no);

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 好きなタイミングで呼び出したいメソッド名を書きます
// この例では引数に[10]を与えてます
Cocos2dxActivity.jniTest(10);
}


Xcodeで実際に呼び出す処理を書きます。
プログラムは結構はしょってるので、気をつけてください。

class HelloWorld : public cocos2d::CCLayer {
public:
~HelloWorld();
HelloWorld();

static HelloWorld* sharedScene(void);

// returns a Scene that contains the HelloWorld as the only child
static cocos2d::CCScene* scene();

void jniTest(int no);

}


#include "HelloWorldScene.h"

static HelloWorld *g_gameScene;

////////////////////////////////////////////////////////////////////////////////
HelloWorld* HelloWorld::sharedScene() {
return g_gameScene;
}

////////////////////////////////////////////////////////////////
CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();

// add layer as a child to scene
g_gameScene = new HelloWorld();
scene->addChild(g_gameScene);

return scene;
}

////////////////////////////////////////////////////////////////////////////////
void HelloWorld::jniTest(int no)
{
CCLog("jniTest=%d", no);

}

これで受け渡しが出来ると思います。
ビルドするのを忘れずに!!
スポンサーサイト

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

  • 2013/05/17(金) 19:08:44 |
  • |
  • #
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://gaomar.blog.fc2.com/tb.php/61-9caeb57b
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。