《不靠谱2.x》003.CCNode

前端之家收集整理的这篇文章主要介绍了《不靠谱2.x》003.CCNode前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、概述
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

原文链接:https://www.f2er.com/cocos2dx/342440.html

猜你在找的Cocos2d-x相关文章