由於之前使用版本是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("你的代碼");