由于之前使用版本是1.4.0来开发游戏,当把升级到1.9.1时。发布原生平台时,发现与1.4有很大的不同。原因是从 v1.7 开始引入 JSB 2.0 ,其中js代码反射原生还没什么问题。当原生反射到js函数时就会出问题了。下面就讲解下如何在v1.7以后的版本中使用原生函数反射js代码。

Android平台
在v1.6以前可以直接使用:
Cocos2dxJavascriptJavaBridge.evalString("你的代码");
v1.7以后只能用以下方式:
Cocos2dxHelper.runOnGLThread(new Runnable() {
@Override
public void run() {
Cocos2dxJavascriptJavaBridge.evalString("你的代码");
}
});
ios平台
在v1.6以前是引入#include "ScriptingCore.h",然后使用以下方法:
//引入头文件
#include "ScriptingCore.h"
//使用
ScriptingCore::getInstance()->executeString("你的代码");
到了v1.7以后,JS 引擎的管理从 ScriptingCore 被移动到了 se::ScriptEngine 类中。于是变成下面方式:
//引入头文件
#include "cocos/scripting/js-bindings/manual/ScriptingCore.h"
#include "cocos/scripting/js-bindings/jswrapper/SeApi.h"
//使用
se::ScriptEngine* se = se::ScriptEngine::getInstance();
se->evalString("你的代码");
网友评论