Cocos2dx/AndroidNative連携
提供: 初心者エンジニアの簡易メモ
2017年2月20日 (月) 16:08時点におけるAdmin (トーク | 投稿記録)による版 (ページの作成:「==サンプルコード== -Classes/NativeLauncher.h #ifndef Helloworld_NativeLauncher_h #define Helloworld_NativeLauncher_h class NativeLauncher { public: stati...」)
サンプルコード
-Classes/NativeLauncher.h
#ifndef Helloworld_NativeLauncher_h
#define Helloworld_NativeLauncher_h
class NativeLauncher
{
public:
static void launchNative();
};
#endif
-NativeLauncher.cpp
#include "NativeLauncher.h"
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#define CLASS_NAME "org/cocos2dx/cpp/AppActivity"
void NativeLauncher::launchNative()
{
cocos2d::JniMethodInfo t;
if (cocos2d::JniHelper::getStaticMethodInfo(t, CLASS_NAME, "launchNative", "()V")) {
t.env->CallStaticVoidMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
}
}
-Classes/HelloWorldScene.h
void menuLogCallback(cocos2d::Ref* pSender);
-Classes/HelloWorldScene.cpp
#include "NativeLauncher.h"
bool HelloWorld::init()
{
// 略
auto logItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuLogCallback, this));
logItem->setPosition(Vec2(origin.x + visibleSize.width - logItem->getContentSize().width/2 ,
origin.y + visibleSize.height - logItem->getContentSize().height/2));
auto logmenu = Menu::create(logItem, NULL);
logmenu->setPosition(Vec2::ZERO);
this->addChild(logmenu, 1);
// 略
}
void HelloWorld::menuLogCallback(Ref* pSender)
{
NativeLauncher::launchNative();
}
-proj.android-studio/app/src/org/cocos2dx/cpp/AppActivity.java
public class AppActivity extends Cocos2dxActivity {
public static void launchNative()
{
System.out.println("launchNative()");
}
}
-proj.android/jni/Android.mk
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp \
../../Classes/NativeLauncher.cpp
NativeLauncherを追加
-proj.android-studio/jni/Android.mk
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp \
../../Classes/NativeLauncher.cpp
NativeLauncherを追加
