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

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

1赞

Java还是一样。

((Cocos2dxActivity)Cocos2dxActivity.getContext()).runOnGLThread(new Runnable() {
            @Override
            public void run() {
                Cocos2dxJavascriptJavaBridge.evalString("your js code");
            }
        });

objective-c:

    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");
        });
    }
3赞

谢谢!

请问一下 oc里面怎么引用se?

这个。。。我晕,你重命名.m文件为.mm,然后include 对应头文件,不就可以直接用了。。。

1赞

ScriptEngine的se怎么引入的啊???研究一天了.不知道怎么弄.不会OC…求帮助

这个问题也没人回答哈

同问:se用不了啊,文件名是.mm的,也用的include

我们全新的项目已经改用Unity,这个Creator的项目因为不同的用户经常不稳定,但还有点收入,还想通过Cocos的方式(升级版本)来修正一下,没想到升级这么麻烦。

最快的方法,在ScriptingCore加上evalString

这个帖一路看下来,都不知道你们说的啥。

请把错误信息贴一下。

就是这么个问题

你这个cpp/.mm文件是否include了cocos/scripting/js-bindings/jswrapper/SeApi.h 这个文件?

如果是m文件,还需要重命名为.mm。

1赞

非常感谢,终于解决问题了,我觉得这个应该写在官方文档里面,不然我们这些小白都不知道怎么解决问题的!

这个应该在cocos2d.h里面包含

这个是cpp基础啊,如果这都要列入文档,那么是否需要把c++语法、stl文档等等都加进我们的文档中?

其实creator中用的引擎源自于cocos2d-x,cocos2d-x总的cocos2d.h 只是包含c++核心模块,不会包含绑定相关的API,因为cpp开发者并不需要脚本绑定的东西。

这块我觉得可以把include SeApi.h 加入文档。

安卓是可以自动导入头文件,IOS不能自动导入,然后我们在不知道路径的情况下很难找到路径,虽然cocos开源,但不是都会去看源码的,我是从来都不看的,现在看来跟我一样不看源码的人不少,所以今天都卡在这个问题上了

2赞

是的 我们也是 安卓迷之崩溃有8% ios 3%-5%左右

现在看来不是我一个人的问题了,5%左右的用户经常闪退,莫名其妙的,有时都会怀疑是不是接的SDK有后门.:sweat:

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());
}
});
}

performFunctionInCocosThread([=] 少一个等于号