facebook twitter hatena line email

「Cocos2dx/AndroidNative連携」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(サンプルコード)
(サンプルコード)
行10: 行10:
 
  #endif
 
  #endif
  
-NativeLauncher.cpp
+
-Classes/NativeLauncher.cpp
 
  #include "NativeLauncher.h"
 
  #include "NativeLauncher.h"
 
  #include <jni.h>
 
  #include <jni.h>

2017年2月20日 (月) 16:46時点における版

サンプルコード

-Classes/NativeLauncher.h

#ifndef Helloworld_NativeLauncher_h
#define Helloworld_NativeLauncher_h
class NativeLauncher
{
public:
    static void launchNative();
};
#endif

-Classes/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.cppを追加

-proj.android-studio/jni/Android.mk

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp \
                   ../../Classes/NativeLauncher.cpp

NativeLauncher.cppを追加

参考

https://rakuishi.com/archives/5817/