libs/javascript下有两部分bindings和spidermonkey。
其中spidermonkey为js虚拟机,暂时不去管它。
bindings下分为四部分,分别为主干部分,generated,
js,obfuscate。
下面分别介绍。

1.主干部分,按照文件顺序一次介绍。
    cocos2d_specifics.h声明一些回调和代理。包括触摸事件,
schedule事件,CCBAnimation等。
    cocosjs_manual_conversions.h封装了两个方法,jsval_to_CGPoint和
CGPoint_to_jsval,即js中的坐标和CGPoint的转换。
    js_bindings_ccbreader.h提供对CocosBuilder的解析支持。
    js_bindings_chipmunk*.h系列,提供对chipmunk物理引擎的支持。
    js_bindings_config.h定义了一些错误检测及输出信息,配置。
    js_bindings_core.h提供一些jsobject和proxy相互获取、设置和
删除的方法。(没太明白这些代理是什么)
    js_bindings_opengl.h提供对opengl的支持。
    js_bindings_system_funcitons.h提供一些操作本地存储的
方法(获取,设置,删除)。
    js_bindings_system_functions_registration.h注册上述方法,以便
在js中调用。
    js_bindings_system_registration.h只提供一个方法
void jsb_register_system(JSContext *globalC, JSObject *globalO);
设置全局上下文和全局对象,设置本地存储。
    js_manual_conversions.h提供jsval_to_int/long/c_class...和
int/long/c_class..._to_jsval的方法。
    jsb_cocos2dx_extension_manual.h注册所有的extension。实际仅支持
三种控件,CCScrollView(),CCTableView(即Android中的listView),
CCEditBox(输入框)。
    jsb_helper.h通过宏定义封装了一些通用性的类和函数声明方法。
这种方法我从未见过,怕表述不清楚,直接上一段代码。

#define JS_BINDED_FUNC_IMPL(klass, name) \
static JSBool klass##_func_##name(JSContext *cx, unsigned argc, jsval *vp) { \
JSObject* thisObj = JS_THIS_OBJECT(cx, vp); \
klass* obj = (klass*)JS_GetPrivate(thisObj); \
if (obj) { \
    return obj->name(cx, argc, vp); \
} \
JS_ReportError(cx, "Invalid object call for function %s", #name); \
return JS_FALSE; \
} \
JSBool klass::name(JSContext *cx, unsigned argc, jsval *vp)

jsb_opengl_*.h系列提供对opengl的支持,包含一些配置方法和额外的支持。
    jsb_websocket.h对websocket的绑定。(websocket:html5提供的b/s双向通信协议)。
    ScriptingCore.h核心类,单例方法。主要功用为获取全局上下文和全局对象。
    XMLHTTPRequest.h。一种网络通信协议,用于后台与server交换数据。具体功用
不了解。

2.generated部分

jsb_cocos2dx_auto.hpp绑定了cocos2d-x几乎所有的主干功能(不含扩展部分)。
此处代码量较大,没有详细统计。
    jsb_cocos2dx_extension_auto.hpp提供了对CCBReader(CocosBuilder解析),
CCControl,CCScale9Sprite,CCControlButton,CCScrollView,CCAnimationManager,
CCTableViewCell,CCTableView和CCEditBox支持。

3.js部分
    一堆js代码,没看明白。

4.obfuscate
    一大堆的声明,不知道干什么用的。字面意思上理解貌似是用来做混淆的。

注:关于这块目前官方尚未有描述文档和api说明文档。以上意见均为分析代码

所得。

本博客内容均为原创,转载请注明:http://blog.csdn.net/balitaimonk/article/details/9970123

最新文章

  1. 全屏背景:15个jQuery插件实现全屏背景图像或媒体
  2. c#.net对excel的操作——创建一个excel报表两个sheet就是2个表分别添加内容
  3. Python3基础 print 输出hello world
  4. 操作符 Thinking in Java 第三章
  5. HTML可编辑下拉框
  6. Android开发之Bitmap.Config.RGB_565
  7. STM32与S3C2440的区别
  8. MATLAB灰度图、中值滤波图
  9. xaml的margin和css的margin对比
  10. CentOS安装glibc-2.14,错误安装libc.so.6丢失急救办法
  11. 转:jmeter实践
  12. UVA 11551 Experienced Endeavour
  13. 1610: [Usaco2008 Feb]Line连线游戏
  14. SQL Server 文件结构 与 全局变量,函数
  15. 套接字API
  16. SharePoint 读取选项字段所有Choise
  17. pll时钟延迟为问题
  18. css第二天
  19. mysql中外键的特点
  20. 洛谷.1486.[NOI2004]郁闷的出纳员(Splay)

热门文章

  1. (转)struts2.0配置文件、常量配置详解
  2. pdb文件 小结
  3. codeforces #310 div1 A
  4. Struts 2 + Spring2.5 + Hibernate3整合例子
  5. php中的ceil和floo以及round函数
  6. 如何完全卸载VS2010
  7. The Material Sourcing Process Failed To Create Picking Suggestions in INVTOTRX (文档 ID 2003806.1)
  8. Repeater的ItemCommand事件(LinkButton)
  9. 以CTE表达式实现MSSQL的字符串分割函数
  10. Erlang入门(四)——错误处理和鲁棒性