本文以oc层以AppController.mm为例
一、js层向oc层发送消息:
1、传递1个参数:
js层发送
// "AppController"是类名
// "test01"是方法名
// "我是js传过来的参数"是传过去的参数
jsb.reflection.callStaticMethod("AppController", "test01:", "我是js传过来的参数");
oc层接收
// AppController类里
+ (void)test01:(NSString*) param {
cocos2d::log("收到js层传过来的参数");
NSLog(@"收到的参数是:%s", param); // "收到的参数是:我是js传过来的参数"
}
2、传递2个参数:
js层发送
// 传递多个参数时,除了第一个参数,后面的参数都要写参数名
jsb.reflection.callStaticMethod("AppController", "test01:param2:", "我是js传过来的参数1", "我是js传过来的参数2");
oc层接收
// AppController类里
+ (void)test01:(NSString*) param param2:(NSString*)param2{
cocos2d::log("收到js层传过来的参数");
NSLog(@"收到的参数1是:%s", param); // "收到的参数是:我是js传过来的参数1"
NSLog(@"收到的参数2是:%s", param2); // "收到的参数是:我是js传过来的参数2"
一、oc层向js层发送消息:
oc层发送
// 向cocos发送消息。
- (void)sendMsgToJs {
NSString *msg = [NSString stringWithFormat:
@"{\"resultCode\":\"%@\",\"cmd\":\"success\"}",
[NSString stringWithFormat:@"%d", 1],
if(msg == nil){
msg = @"";
}
NSLog(@"向cocos发送 %@",msg);
//指针: 前面有*的用->调用,和没有*的用.调用是等价的
std::string *nsMsg = new std::string([msg UTF8String]);
std::string jsCallStr = "deviceAPI.onOCMsg(\'"; // deviceAPI是全局变量,里面有个onOCMsg方法
jsCallStr.append(*nsMsg);
jsCallStr.append("\');");
se::Value *ret = new se::Value();
se::ScriptEngine::getInstance()->evalString(jsCallStr.c_str() , -1 , ret);
NSLog(@"%@",@"向cocos发送结果ok");
}
js层接收
//收到来自objectiveC的消息。
onOCMsg: function (msg) {
console.log("收到来自objectiveC的消息");
let msgObj = JSON.parse(msg);
console.log(msgObj.resultCode); // 1
console.log(msgObj.cmd); // success
},
网友评论