1.jsb_js调用c++中的方法
环境说明:
1.引擎使用的是cocos2d-js-v3.0-beta版本
2.c++工具使用的是vs2012
3.使用v3.0版本可以直接使用Cocos2d console创建win32下的项目,官方教程:
http://www.cocos2d-x.org/docs/manual/framework/html5/v2/cocos-console/zh
创建好后,运行frameworks\runtime-src\proj.win32下的.sln即可打开项目。
注意:使用vs2012及以上版本打开,因为vs2012以下的版本不支持c++11。
生成的项目中已经自带了cocos2d-x相关的内容,所以,用vs打开.sln项目后可以直接运行项目。
4.源码运行方法:
使用如上方法创建好项目,将js文件覆盖项目根目录下的src目录(projects\Test0610\src)里的内容;
将c++中的文件覆盖“\frameworks\runtime-src\Classes”目录里的内容。
----
1.在打开的.sln项目下创建一个.hpp文件
(*.hpp与*.h类似,hpp是C++程序头文件;一般来说,*.h里面只有声明,没有实现,而*.hpp里声明实现都有,后者可以减少.cpp的数量)。
2.在.hpp文件中编码由js调用的方法:
a.基础的文件引入信息
#include"cocos2d_specifics.hpp"
#include"cocos2d.h"
b. 定义用来处理js请求的函数
bool jsb_test_function(JSContext *cx,uint32_targc,JS::Value *vp){}
c.创建一个可以供js调用的方法入口,并与上边定义的方法关联起来
void register_test_function(JSContext* cx,JSObject* obj){}
3.在AppDelegate.cpp中注册.hpp中定义的register_test_function函数:
sc->addRegisterCallback(register_test_function);
(头文件中需要引入#include"jsb_test_function.hpp")
5.在app.js文件中可以直接调用第2步c中定义的js方法入口:
var res=openShare(521,"arg2_string");
(js可以给c++传入参数,并接受c++返回的信息)
直接修改项目根目录下res中的js文件即可,
vs在运行项目时,会自动将该目录下的js文件拷贝到vs项目对应的目录里: