cocos2dx 3.17 (JavaScript) Android
Apropos native auf Android von cocos2dx, Sie schreiben Code in Java, aber abhängig von der Bibliothek, die Sie verwenden, müssen Sie cpp berühren. Der Fluss von js-> java-> cpp. Im Gegenteil, in Bezug auf den Mechanismus der Ausführung von js-Funktionen von native gibt es java-> js, aber ich möchte cpp-> js machen. Ältere cocos2djs verwendeten "ScriptingCore :: evalString (Code)". Aber wenn ich cocos2dx aktualisieren würde, würde dies abstürzen.
https://github.com/cocos2d/cocos2d-x/issues/17718 https://github.com/cocos2d/cocos2d-x/issues/13807
Nach vielen Recherchen sollte JniHelper verwendet werden.
http://developer.wonderpla.net/entry/blog/engineer/cocos2d-x_jni2/
Durch die Implementierung wie folgt wurde cpp-> java (-> javascript) realisiert.
#include "platform/android/jni/JniHelper.h"
void executeJavaScript()
{
cocos2d::JniMethodInfo t;
if (cocos2d::JniHelper::getStaticMethodInfo(t,
"jp/example/java", //Java-Klasse
"executeJs", //Name der Java-Methode (statisch)
"(Ljava/lang/String;)V" //Streit
)) {
// jstring - C++ representation of Java String
//Konvertieren Sie den Namen der JS-Methode, indem Sie ihn als Zeichenfolge schreiben
jstring stringArg = t.env->NewStringUTF("javascriptMethod('arg')");
// call the method, with arguments
t.env->CallStaticVoidMethod(t.classID, t.methodID, stringArg);
}
}
Recommended Posts