zoukankan      html  css  js  c++  java
  • 我的Cocos2d-x学习笔记(五)CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex

    之前仅仅学习了CCLayer,但是关于层的并不仅仅是这些,还有另外的一些,例如:CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex。

    首先复习一下CCLayer:

    CCLayer的继承关系:


    由CCLayer的继承关系就可以知道此类可以接受触摸操作,重力加速度计,输入。

    CCLayer 类总仅包含CCLayer *CCLayer ::create(void);一个创建层的函数。用法就是创建一个层,添加到渲染树上去。用法之前提到过,再看一遍:

    	CCScene* scene = CCScene::create();
    	HelloWorld* layer = HelloWorld::create();
    	scene->addChild(layer);
        此时创建的层是透明的,直接添加到父节点CCScene当中。这里面有一点需要注意,CCLayer默认是忽略锚点的,锚点忽略后其锚点位置位于ccp(0,0)的位置,而CCLayer对象的坐标则默认为ccp(0,0)。

    #define ccp(__X__,__Y__) cocos2d::CCPointMake((float)(__X__), (float)(__Y__))
    #define CCPointMake(x, y) CCPoint((float)(x), (float)(y))
    由上面两行代码可知ccp()为一个宏,其实际作用是创建一个CCPoint()对象。

    之后看一些CCLayer的子类:


    在这些子类中,现在只来学习一些CCLayerColor、CCLayerGradient、CCLayerMultiplex。

    CCLayerColor:

    CCLayerColor类中含有三个创建颜色层的create()函数。

    	CCLayerColor* CCLayerColor::create();
    	CCLayerColor * CCLayerColor::create(const ccColor4B& color);
    	CCLayerColor * CCLayerColor::create(const ccColor4B& color, GLfloat width, GLfloat height);
    CCLayerColor* CCLayerColor::create():使用此函数,创建一个默认颜色值为ccc4(0,0,0,0),和窗口大小一致的层。

    CCLayerColor * CCLayerColor::create(const ccColor4B& color):使用此函数,可以指定一个颜色值,层的大小与窗口一致。

    CCLayerColor * CCLayerColor::create(const ccColor4B& color, GLfloat width, GLfloat height):使用此函数,不仅可以给层指定一个颜色,还可以指定层的宽和高。

    使用举例:

    	1、
    	CCLayerColor* layerColor1 = CCLayerColor::create();
    	addChild(layerColor1);	
    	2、
    	CCLayerColor* layerColor2 = CCLayerColor::create(ccc4(125,125,125,125));
    	addChild(layerColor2);
    	3、
    	CCLayerColor* layerColor3 = CCLayerColor::create(ccc4(125, 125, 125, 125),100,100);
    	addChild(layerColor3);

    CCLayerGradient:

    CCLayerGradient类中含有三个create()函数。

    CCLayerGradient* CCLayerGradient::create();
    CCLayerGradient* CCLayerGradient::create(const ccColor4B& start, const ccColor4B& end);
    CCLayerGradient* CCLayerGradient::create(const ccColor4B& start, const ccColor4B& end, const CCPoint& v);
    CCLayerGradient* CCLayerGradient::create():使用此函数时候,默认从ccc4(0, 0, 0, 255)变到 ccc4(0, 0, 0, 255),默认从上到下渐变,实际上看不到渐变效果。

    CCLayerGradient* CCLayerGradient::create(const ccColor4B& start, const ccColor4B& end):使用此函数可以指定两个渐变颜色,默认从上到下渐变。

    CCLayerGradient* CCLayerGradient::create(const ccColor4B& start, const ccColor4B& end, const CCPoint& v):使用此函数可以指定两个渐变颜色,第三个参数是渐变的方向,是一个向量。

    其中ccColor4B的与ccc4()具体内容如下:

    typedef struct _ccColor4B
    {
        GLubyte r;
        GLubyte g;
        GLubyte b;
        GLubyte a;
    } ccColor4B;
    //! helper macro that creates an ccColor4B type
    static inline ccColor4B
    ccc4(const GLubyte r, const GLubyte g, const GLubyte b, const GLubyte o)
    {
        ccColor4B c = {r, g, b, o};
        return c;
    }
    const GLubyte r, const GLubyte g, const GLubyte b, const GLubyte o:前三个为RGB颜色值,最后一个为透明度。

    CCLayerMultiplex :

        它可以管理多个层,并实现不同层间的切换,但是同一时间只能有一个层是激活状态,其他都是不可见的。  

    实例:

    	CCLayerColor* layerColor = CCLayerColor::create(ccc4(125, 125, 125, 125));
    	CCLayerGradient* layerGradient = CCLayerGradient::create(ccc4(0, 0, 0, 255), ccc4(255, 255, 255, 255), ccp(1, 1));
    	CCLayerMultiplex* layerMult = CCLayerMultiplex::create(layerColor, layerGradient, NULL);
    	addChild(layerMult);
    默认情况下显示第一个层,可以使用layerMult->switchTo(0); 来切换当前显示图层。


    在CCLayer、CCLayerColor、CCLayerGradient当中都存在init开头的函数,此函数可以在从CCLayer、CCLayerColor、CCLayerGradient派生子类时,子类init()中初始化父类时直接调用为父类初始化为指定背景颜色等。

  • 相关阅读:
    python 成功解决import librosa出错问题
    音频属性详解(入门解读)
    如何用python将txt中的package批量安装
    python生成一个WAV文件的正弦波
    图像处理方法(膨胀腐蚀,霍夫变换,滤波,去噪,图像增强,二值化,图片旋转,画直线)
    ORACLE数据库学习笔记1
    SICP:构造数据抽象--数据结构中队列与树的解释
    SICP:构造过程抽象--面向对象的解释
    Java学习笔记--文件IO
    Java学习笔记--异常机制
  • 原文地址:https://www.cnblogs.com/gongyan/p/4539408.html
Copyright © 2011-2022 走看看