参考:http://www.tairan.com/archives/4902
参考文章是2.x版本的,对于3.0也许不合适了,没有深究。
代码:https://github.com/kenkozheng/cocos2d-js/tree/master/jsbinding(cpp_js%20js_cpp)
1 JS调用C++
3.0中写这个绑定比较简单,跟ANE调用java如出一辙,一个jscontext,一个jsval,使用cocos2d提供的c++和js变量转换的函数做好转换即可。
cocos2d-js原来就定义好了代码风格:
sc->addRegisterCallback(MinXmlHttpRequest::_js_register); sc->addRegisterCallback(register_jsb_websocket); sc->addRegisterCallback(register_jsb_socketio); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) sc->addRegisterCallback(JavascriptJavaBridge::_js_register); #endif sc->addRegisterCallback(register_jsb_kenko_all); sc->start();
我们也顺着这个风格,添加一个函数:register_jsb_kenko_all,这是一个全局函数。
jsb_kenko_auto.h #ifndef jsb_jsb_kenko_auto_h #define jsb_jsb_kenko_auto_h #include "cocos2d.h" std::string os_info(); bool jsb_os_info(jscontext *cx,uint32_t argc,JS::Value *vp); bool jsb_callback(jscontext *cx,255); line-height:1.5!important">void register_jsb_kenko_all(jscontext* cx,JSObject* obj); #endif