cocos2dx 3.17 (JavaScript) Android
En parlant de natif sur Android de cocos2dx, vous écrivez du code en Java, mais selon la librairie que vous utilisez, vous devez toucher cpp.
Le flux de js-> java-> cpp.
Au contraire, en ce qui concerne le mécanisme d'exécution des fonctions js à partir de natif, il y a java-> js, mais je veux faire cpp-> js.
Les cocos2djs plus anciens utilisaient ScriptingCore :: evalString (code)
.
Mais si je mettais à jour cocos2dx, cela planterait.
https://github.com/cocos2d/cocos2d-x/issues/17718 https://github.com/cocos2d/cocos2d-x/issues/13807
Après de nombreuses recherches, il semble que JniHelper devrait être utilisé.
http://developer.wonderpla.net/entry/blog/engineer/cocos2d-x_jni2/
En implémentant comme suit, cpp-> java (-> javascript) a été réalisé.
#include "platform/android/jni/JniHelper.h"
void executeJavaScript()
{
cocos2d::JniMethodInfo t;
if (cocos2d::JniHelper::getStaticMethodInfo(t,
"jp/example/java", //Classe Java
"executeJs", //Nom de la méthode Java (statique)
"(Ljava/lang/String;)V" //argument
)) {
// jstring - C++ representation of Java String
//Convertir le nom de la méthode JS en l'écrivant sous forme de chaîne de caractères
jstring stringArg = t.env->NewStringUTF("javascriptMethod('arg')");
// call the method, with arguments
t.env->CallStaticVoidMethod(t.classID, t.methodID, stringArg);
}
}
Recommended Posts