Cocos2d-x源码阅读1 UI树(第一次系统而有成效的阅读源码的感悟)

之前我很少看源码,觉得枯燥又没有头绪。说实话现在看的也少,不过作为程序员要想成长,必须要突破自己的瓶颈吧。

也许我的天赋不在写代码这里,也许这是一个越走越难的路,也许这又是一个有金矿的浅坑,坚持下去就会挖到金矿。

然而没有那么多可以选择叻,试着去强大吧,即使自己不擅长,即使落后很多,即使,即使,即使,即使,。。。。

http://cn.cocos2d-x.org/tutorial/show?id=2157

推荐大家去这里看这个视频,自己看源码可能没有头绪,跟着王老师的视频效果还是很好的。

这里是我根据视频记录下来的主要的函数,涉及了Node的所有添加,删除,设置属性和查找,具体的细节还是大家自己去看视频对着源码阅读。感觉真不错。(*^__^*) ……

自己去看视频吧,去看吧。

virtual void ignoreAnchorPointForPosition(bool newValue) ;只能用于Scene和Layer,用在其他控件报错,为true则不管设置的锚点是多少,都以(0,0)作为锚点

virtual void setAnchorPoint(const Vec2& anchorPoint);用百分比设置本地化坐标系,就是自己坐标系

virtual const Vec2& getAnchorPoint() const;
返回的锚点的位置(百分比)

virtual const Vec2& getAnchorPointInPoints() const; 返回锚点的位置(具体像素值)

virtual void setPosition(const Vec2 &position); 是设置自己在父UI的坐标系的位置,position相对于OpenGL坐标系

virtual void setNormalizedPosition(const Vec2 &position); 用0-1之间的值设置位置,0-1之间是相当于 pos/getParent()->getContentSize();

virtual const Mat4& getNodeToParentTransform()
const;得到一个矩阵,可以转换子UI的坐标到父UI的坐标

virtual AffineTransform getNodeToParentAffineTransfrom() const; 得到一个仿射变换,可以转换子UI的坐标到父UI的坐标,比Mat4矩阵要小

virtual const Mat4& getParentToNodeTransform() const; 得到一个矩阵,可以转换父UI的坐标系到子UI的坐标系

virtual AffineTransform getParentToNodeAffineTransfrom() const; 得到一个仿射变换,可以把父UI的坐标系转换到子UI的坐标系

virtual Mat4 getNodeToWorldTransfrom() const;

virtual AffineTranfrom getNodeToWorldAffineTransfrom() const;

virtual Mat4 getWorldToNodeTransfrom() const;

virtual AffineTransfrom getWorldToNodeAffineTransfrom() const;

Vec2 convertToNodeSpace(const Vec2& worldPoint) const;

Vec2 convertToWorldSpace(const Vec2& nodePoint) const;

Vec2 convertToNodeSpaceAR(const Vec2&worldPoint) const;
加入了锚点坐标系,如果锚点为(0,0)则和 convertToNodeSpace一样,否则以锚点为准

Vec2 convertToWorldSpaceAR(const Vec2& nodePoint) const;
加入了锚点坐标系,如果锚点为(0,0)则和 convertToWorldSpace一样,否则以锚点为准

Vec2 convertTouchToNodeSpace(Touch * touch) const;

Vec2 convertTouchToNodeSpaceAR(Touch * touch) const;

virtual void addChild(Node * child, int localZorder, int tag);

virtual Node * getChildByTag(int tag) const;

virtual Node * getChildByName(const std::string & name) const;

virtual void setParent(Node * parent);

virtual Node * getParent() {return _parent;}

virtual void removeFromParent();

virtual void removeFromParentAndCleanup(bool cleanup);

virtual void removeChild(Node * child, bool cleanup = true);

virtual ssize_t getChildrenCount() const;

virtual void removeAllChildren();

virtual void removeAllChildrenWithCleanup(bool cleanup);

时间: 2024-08-07 08:25:26

Cocos2d-x源码阅读1 UI树(第一次系统而有成效的阅读源码的感悟)的相关文章

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

Cocos2d-x 3.2:UI树

Cocos2d-x 3.2:UI树 本文参考与深入理解Cocos2d-x 3.x:UI树一文 Cocos2d-x 3.x 引擎的UI树系统 首先得普及一下Cocos2d-x的基础概念,Cocos2d- x的游戏世界一般是由一个又一个的场景(Sence)组成的,比如登录是一个场景,战斗是一个场景:然后场景之下分为一个又一个的层(Layer),比如 界面层,地图层:层下又分为一个又一个的精灵.UI控件以及各类的界面元素.而以上种种都是基于一个叫做Node的基类.好了,回顾完了.下面我们来看看这个No

[WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析

[WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285人阅读 评论(1) 收藏 举报  分类: Webkit(34)  JavascriptCore/JIT(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. 看到HorkeyChen写的文章<[WebKit] JavaScriptCore解析--基础篇(三)从脚本代码到JIT编译的代码实现>

自定义的jquery ui树控件

简单的自定义jquery ui树控件,用于机构人员,支持自动加载下级节点数据 jQuery.widget("xway.Tree", { _Node: function(data) { this.id = data.type + "_" +data.id; this.trid = "tr_" + this.id; this.label = data.label; this.parent = null; this.tree = null; this.

《pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统》

<pigcms v6.2最新完美至尊版无任何限制,小猪微信源码多用户微信营销服务平台系统> 前两天分享了套小猪CMS(PigCms)多用户微信营销服务平台系统V6.1完美破解至尊版带微用户管理CRM+微信支付,还是不少童鞋反应出不少问题.今天再分享套小猪pigcms v6.2最新完美至尊版无任何限制,pigcms多用户微信营销服务平台系统,非常感谢我们网站一位童鞋提供了这套源码,现在源码我们正在检测中,主要检测源码的安全性或有没有木马后门什么的. 暂时放我们测试时候的几张截图出来 102套模板

IOS游戏源码下载之简易版雷电(2.2.3版本)源码完整下载和简单开发教程

 头回写教程这玩意,真不知道要写些什么,所以主要就是共享下我的代码,和一些重要功能的讲解吧,各位如果有啥不懂的可以回帖提问哟. 其实这个demo(为何叫demo呢,因为我真不敢称这个为游戏呀)是我初学cocos2d-x两周的时候写的,所以可能写的不是很好(好吧,其实现在写的东西也不好),当初主要还是靠着度娘和TestCpp学的,所以在此还是要强调一下TestCpp的重要性,要好好把它看一遍哟,以后你想实现什么功能就可以去翻看了. 好了,言归正传,还是介绍下我写的这个demo了,在此先华丽丽的

仿快图系统自带图片浏览器应用源码项目

仿快图系统自带图片浏览器应用源码,最近在做一个微博i动态模块,需要查看他人相册照片或者微博内容图片等.看到QQ空间那个效果不错,尝试了不少方法来实现,均不是怎么理想.最初是想通过自定义GroupView和imageView来实现,结果在处理滑动事件和放大的图片拖曳不是很顺畅,自己也没深入解决,期望有高手实现了给分享下.后来看了网上的一些方法和帖子,尝试着拿别人的自定义包做一些修增自用.现在用gallery和imageVIew做的,感觉还不错.放上来最初的小demo,供大家参考分享. 源码下载:

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载)

Java开源生鲜电商平台-RBAC系统权限的设计与架构(源码可下载) 说明:根据上面的需求描述以及对需求的分析,我们得知通常的一个中小型系统对于权限系统所需实现的功能以及非功能性的需求,在下面我们将根据需求从技术角度上分析实现的策略以及基于目前两种比较流行的权限设计思想来讨论关于权限系统的实现. 1.1.       技术策略 l         身份认证 在B/S的系统中,为识别用户身份,通常使用的技术策略为将用户的身份记录在Session中,也就是当用户登录时即获取用户的身份信息,并将其记录

Redis源码剖析(八)--对象系统

对象的类型与编码 在 Redis 中新创建一个键值对时, 我们至少会创建两个对象, 一个对象用作键值对的键(键对象), 另一个对象用作键值对的值(值对象).Redis 中的每个对象都由一个 redisObject 结构表示: typedef struct redisObject { // 类型 unsigned type:4; // 编码 unsigned encoding:4; // 对象最后一次被访问的时间 unsigned lru:REDIS_LRU_BITS; /* lru time (