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项目对应的目录里:

 

 

 

 

相关推荐