1.7.0 中. 原Objective-c调用JS方法 evalString() 失效.

小弟才疏学浅.经常遇到问题 只能不耻下问了…望见谅…

1.7.0 中. 原Objective-c调用JS方法失效.

在1.6.2中好用的. 一样代码.

‘evalString’ in ‘ScriptingCore’

官方文档中只找到 JS调用 Objective-c
连接:http://docs.cocos.com/creator/manual/zh/advanced-topics/oc-reflection.html

是不是要换成其他方法了?

1.7主贴正文有介绍

找到了

在 1.7 中,抽象层被设计为一个与引擎没有关系的独立模块,对 JS 引擎的管理从 ScriptingCore 被移动到了 se::ScriptEngine 类中,ScriptingCore 被保留下来是希望通过它把引擎的一些事件传递给封装层,充当适配器的角色。

我再看看文档
之前…太长了就没仔细看.

1赞

嗯~~~

老哥,请问你是怎么解决的?我找不到文档在哪

std::string jsCallStr = cocos2d::StringUtils::format("%s("%s");",funcName.UTF8String, jsonStr.UTF8String);
if (std::this_thread::get_id() == Director::getInstance()->getCocos2dThreadId())
{
bool flag = se::ScriptEngine::getInstance()->evalString(jsCallStr.c_str());
if(!flag) {
NSLog(@“jsCallStr = %s”,jsCallStr.c_str());
}
}
else
{
std::string jsCallStr = “ss(cons);”;
Director::getInstance()->getScheduler()->performFunctionInCocosThread(={
bool flag = se::ScriptEngine::getInstance()->evalString(jsCallStr.c_str());
if(!flag) {
NSLog(@“jsCallStr = %s”,jsCallStr.c_str());
}
});
}

为什么1.70版本CCC构建编译的项目用这个方法无效从js调用oc且报错, 以下是我的代码: 问题见图, 有同问的吗? 求解
1 js 端代码:

2 oc 端代码

3 报错

我的理解是 js 端调用 oc 端代码无效. 但问题是我之前把1.6.2的项目下编译的 build 文件删除后, 再用1.7重新构建编译后用 se::ScriptEngine::getInstance()->evalString(“cc.vv.anysdkMgr.bindIosSuc()”)
这个方法是有效连接了 ios 的, 所以我现在头都是大的, 问题出在哪呢?

2.0.8已经找不到Director类了,我这样用,一直报错

导入#include "base/CCScheduler.h"解决