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

Cocos2d-x中jsb结构剖析的更多相关文章

  1. UNDO内存结构剖析

    UNDO内存结构剖析 一.场景 Oracle的 C事物从早上9:00开始读取A表全部10w行数据,这个而读取需要经历5分钟.在9:01的时候,B事物将A表删除100条记录,那么,当9:05的时候,事物 ...

  2. B树在数据库索引中的应用剖析

    引言 关于数据库索引,google一个oracle index,mysql index总 有大量的结果,其中很多的使用方法推荐,**索引之n条经典建议云云.笔者认为,较之借鉴,在搞清楚了自己的需求的基 ...

  3. C++中的结构体

    http://zhidao.baidu.com/link?url=8OYQSKV9mvSBc6Hkf9NsLQmipSge9VCZDJQGAZZs5PCBQ54UTmK98VRmAklEEAFYu7d ...

  4. C/C++中的结构体

    结构体定义 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构.   结构体作用 结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成 ...

  5. C语言中的结构体,结构体数组

    C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...

  6. LWIP协议中tcp_seg结构相关指针的个人理解

    我曾经写在新浪博客上面,后来复制到这,图片就不行了. 原文地址转载  LWIP协议中tcp_seg结构相关指针的个人理解(http://blog.sina.com.cn/s/blog_7e586985 ...

  7. C#中的结构体与类的区别

    经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字str ...

  8. 再识C中的结构体

    在前面认识C中的结构体中我介绍了结构体的基础知识,下面通过这段代码来回顾一下: #include<stdio.h> #define LEN 20 struct Student{ //定义结 ...

  9. C# 中的结构类型(struct)

    原文 C# 中的结构类型(struct) 简介 有时候,类中只包含极少的数据,因为管理堆而造成的开销显得极不合算.这种情况下,更好的做法是使用结构(struct)类型.由于 struct 是值类型,是 ...

随机推荐

  1. PAT-乙级-1033. 旧键盘打字(20)

    1033. 旧键盘打字(20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 旧键盘上坏了几个键,于是在敲一段文 ...

  2. Fiddler 日志

    Fiddler 日志(Logging) 在开发扩展插件及编写FiddlerScript时对调试程序非常有用. 1.输出日志 在FiddlerScript脚本中,你可以这样输出输出日志: Fiddler ...

  3. C++ 嵌套类使用(一)

    一.嵌套类 在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型.之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的 ...

  4. 基于Oracle OCI的数据访问C语言接口ORADBI .

    基于Oracle OCI的数据访问C语言接口ORADBI cheungmine@gmail.com Mar. 22, 2008   ORADBI是我在Oracle OCI(Oracle 调用接口)基础 ...

  5. zoj 3380 Patchouli's Spell Cards 概率DP

    题意:1-n个位置中,每个位置填一个数,问至少有l个数是相同的概率. 可以转化求最多有l-1个数是相同的. dp[i][j]表示前i个位置填充j个位置的方案数,并且要满足上面的条件. 则: dp[i] ...

  6. IDEA 运行maven命令时报错: -Dmaven.multiModuleProjectDirectory system propery is not set

    在file-setting里面,找到maven的设置: 先加入一个环境变量 然后配置一个JVM的参数: -Dmaven.multiModuleProjectDirectory=$M2_HOME OK ...

  7. BZOJ 2806 cheat

    首先这个题目显然是要二分转换成判断可行性的 之后我们考虑DP 设f(i)表示 1->i 熟悉的子串的长度的最大值 那么对于i这个点,要么不在熟悉的子串中,要么在熟悉的子串中 所以得到 f(i)= ...

  8. ids & hdmi 原理

    http://www.taiwanwebinar.com/zh_TW/STATIC/SITE/dwc_hdmi_tx.pdf http://blog.csdn.net/g_salamander/art ...

  9. Servlet课程0424(二) 通过继承GenericServlet来开发Servlet

    //这是第二种开发servlet的方法(继承GernericServlet) package com.tsinghua; import javax.servlet.GenericServlet; im ...

  10. SQLite入门与分析(二)---设计与概念

    写在前面:谢谢各位的关注,没想到会有这么多人关注.高兴的同时,也感到压力,因为我接触SQLite也就几天,也没在实际开发中用过,只是最近项目的需求才来研究它,所以我很担心自己的文章是否会有错误,误导别 ...