Hey guys!
I have followed the instructions here:
https://docs.cocos2d-x.org/creator/manual/en/advanced-topics/oc-reflection.html
https://docs.cocos2d-x.org/creator/manual/en/advanced-topics/java-reflection.html
And I’ve managed to do the following:
Call a JAVA method from JS.
Call a JS method from JAVA.
Call an OBJ-C method from JS.
Now I’m trying to figure out how I can call a JS method from OBJ-C. Is it possible to achieve?
Hi, do you have found a way?
Thanks
Stefano
Sure!
Import the following headers in the Obj-C class you’re going to call a JS method:
#import "cocos2d.h"
#import "AppDelegate.h"
#import "cocos/scripting/js-bindings/manual/ScriptingCore.h"
Then you can call it it like this:
- (void)callJS:(NSString *)expressionToEval {
ScriptingCore *sc = ScriptingCore::getInstance();
if(sc) {
const char * strToEval = [expressionToEval cStringUsingEncoding:NSUTF8StringEncoding];
sc->evalString(strToEval);
}
}
Make sure your implementation file extension is ClassName.mm rather than ClassName.m.
The .mm extension stands for Objective-C++, when an Obj-C compiler can process C++ classes.
2 Likes