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

来源:互联网 发布:淘宝怎么打新品标 编辑:程序博客网 时间:2024/04/30 01:38

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

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

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

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);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


1 0
原创粉丝点击