求教cocos creator v1.7 oc和java要怎么调用js代码

问一下 1.7 c++怎么调用js???

你这个问题太大了。
先去看看文档吧:

https://github.com/cocos-creator/cocos2d-x-lite/blob/develop/cocos/scripting/js-bindings/docs/JSB2.0-learning-zh.md

为什么1.70版本CCC, 新建项目后想从js调用ios, 以下是我的代码: 问题见图, 有同问的吗? 求解
1 js 端代码:

2 oc 端代码

3 报错

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

@dumganhar 大神, 帮忙来解决下啊…

是不是你的className 写错了?
Converting class name failed!

不会啊, 这是 js 中的初始定义

然后 oc 端引入的是

提交一个demo吧。应该是使用姿势不对。

从一个项目拷贝到另一个项目,脚本和场景key相同了,新建一个脚本或场景后编辑器又得重来挂载脚本,还不知道key值是否和另一个项目相同,这样很影响脚本和场景更新,子游戏。
建议方式:1资源key用相对路径和文件名生成唯一key,例如 resource/aa.png, resource/bbb.mp3
2脚本和场景,prefab这些用内容生成唯一key,保证每个独立项目key得唯一性,不然想做大厅多子游戏的坑太多,根本没法做,编辑器不支持

不知道这个建议行不行

脚本和场景 uuid 怎么会相同呢?

请问js端的函数怎么定义呢
std::string jsCallStr = cocos2d::StringUtils::format(“Loading.onGameLoginRsp(”%s");",[string UTF8String]);
se::ScriptEngine* se = se::ScriptEngine::getInstance();
if (std::this_thread::get_id() == Director::getInstance()->getCocos2dThreadId())
{
cocos2d::log("=======1=======");
se->evalString(jsCallStr.c_str());
}
else
{
cocos2d::log("=======2=======");
Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{
se->evalString(jsCallStr.c_str());
});
}
j s:
onGameLoginRsp(loginret) {
console.log(“call from Java and IOS, onGameLoginRsp”);

}
报错
ERROR: SyntaxError: Unexpected EOF, location: (no filename):1:

什么意思

我写了一个方便的调用小框架:
https://github.com/qcdong2016/creator-native-bridge

2.0.2是不是该了 现在oc要这么调用js

if (std::this_thread::get_id() == Director::getInstance()->getCocos2dThreadId())
{
se::ScriptEngine::getInstance()->evalString(“your JS code”);
}
else
{
Director::getInstance()->getScheduler()->performFunctionInCocosThread({
se::ScriptEngine::getInstance()->evalString(“your JS code”);
});
}

这个在2.0.2没有了 @dumganhar 要怎么改

se::ScriptEngine::getInstance()->evalString("");

······

我是说判断线程的那个代码 不用判断直接调吗

那是Android

顶顶顶顶顶

大大,能否问下,在自己写的oc类中,导入头文件后#import “cocos/scripting/js-bindings/jswrapper/SeApi.h”,se命名空间变成int值的情况,我确认自己在该类里是没有命名这个se属性的。然后在AppController.mm类中导入又可以正常使用se命名空间,有点懵了,是哪里的结构出了问题吗?

问题解决了,自写的类是.m文件格式,se命名空间是c++的头文件,把后缀名改成.mm就可以了,oc代码写的很少,自己搞不拎清。