一、概述
CCNode.h文件由三部分组成:两个枚举类型、CCNode自身定义、继承自CCNode和CCRGBAProtocol的类CCNodeRGBA。源码如下,已有英文注释,另有少量我自己的注释:
1、两个枚举类型
enum { kCCNodeTagInvalID = -1,};enum { kCCNodeOnEnter,kCCNodeOnExit,kCCNodeOnEnterTransitionDIDFinish,kCCNodeOnExitTransitionDIDStart,kCCNodeOnCleanup};
2、CCNode自身定义
略
3、CCNodeRGBA
class CC_DLL CCNodeRGBA : public CCNode,public CCRGBAProtocol{public: CCNodeRGBA(); virtual ~CCNodeRGBA(); virtual bool init(); virtual glubyte getopacity(); virtual glubyte getdisplayedOpacity(); virtual voID setopacity(glubyte opacity); virtual voID updatedisplayedOpacity(glubyte parentopacity); virtual bool isCascadeOpacityEnabled(); virtual voID setCascadeOpacityEnabled(bool cascadeOpacityEnabled); virtual const cccolor3B& getcolor(voID); virtual const cccolor3B& getdisplayedcolor(); virtual voID setcolor(const cccolor3B& color); virtual voID updatedisplayedcolor(const cccolor3B& parentcolor); virtual bool isCascadecolorEnabled(); virtual voID setCascadecolorEnabled(bool cascadecolorEnabled); virtual voID setopacityModifyRGB(bool bValue) {}; virtual bool isOpacityModifyRGB() { return false; };protected:glubyte _displayedOpacity; glubyte _realOpacity;cccolor3B _displayedcolor; cccolor3B _realcolor;bool _cascadecolorEnabled; bool _cascadeOpacityEnabled;};
二、分析
1、通过两个枚举类型的命名方式和意思,推测应该是类似于发送通知时的消息,暂不细究
2、CCNode和CCDirector一样继承自CCObject,但是CCNode要比CCDirector“家大业大”得多。几乎所有和渲染有关的类都继承自CCNode。虽然CCNode自身不能渲染绘制任何图像,但是除此之外的功能,CCNode几乎已经全了。详细如下:
(1)属性包括:位置、缩放、角度、锚点、大小、z-order
(2)拥有添加、移除子节点的各种重载方法、获得/设置父节点的方法
(3)开启、暂停、关闭、获取、设置定时器的各种方法
(4)执行、停止动作的各种重载方法
(5)onEnter、onExit方法第一次出现(另外两个暂时不管)
(6)几乎所有方法都是虚函数;另,类树该分支上第一次出现的被子类广泛覆盖的初始化虚函数:init()
3、CCNodeRGBA继承自CCNode,自然拥有了CCNode的一切开放的方法和属性;除此之外,从另一个父类CCRGBAProtocol上继承了设置透明度和颜色的方法。后面要介绍到的CCSprite,其父类就是CCNodeRGBA,以及另一个类CCTextureProtocol,这也是为什么精灵可以设置透明度和颜色的原因。
三、总结 1、知道了CCNode虽然不能渲染任何图像,但是身为节点的功能已十分完善 2、知道了透明度和颜色设置来源于CCNodeRGBA
总结以上是内存溢出为你收集整理的《不靠谱2.x》003.CCNode全部内容,希望文章能够帮你解决《不靠谱2.x》003.CCNode所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)