• Cocos2d-X中的ZORDER和Tag


    ZORDER:是描写叙述渲染顺序的值,每一个CCNode都有ZORDER,默认是0

    ZORDER越大,越后面绘制

    假设ZORDER同样。那么看arrival顺序。先增加的节点先绘制

    ZORDER仅仅在同样父节点的节点之间进行比較

    先从一段简单的代码看起:

    //在层上设置属性
    bool Zorder::init()
    {
        //初始化父类层
        CCLayer::init();
    
        //得到窗体的尺寸
        CCSize winSize = CCDirector::sharedDirector()->getWinSize();
    
        //创建精灵
        CCSprite* sprite1 = CCSprite::create("CloseNormal.png");
        addChild(sprite1);
    
        //设置精灵的位置
        sprite1->setPosition(ccp(winSize.width/2, winSize.height/2));
    
        CCSprite* sprite2 = CCSprite::create("HelloWorld.png");
        addChild(sprite2);
    
        //设置精灵的位置
        sprite2->setPosition(ccp(winSize.width/2, winSize.height/2));
    
        return true;
    }
    


    上面的代码我是再熟悉只是了,上面的代码实现了。在层中创建了两个精灵。并且两个精灵的位置一样,那么在程序中就会出现这样一个问题。究竟哪个精灵先显示呢?

    为了解决问题,先看一下上面代码的渲染模型


    依据上面的模型可知Layer是CCNode,Sprite1和Sprite2为CCNode的两个子节点,从而可知Sprite1和Sprite2的ZORDER都为0,而后加入的会后绘制。所以后显示后面的精灵

    运行结果:


    改动ZORDER的值:

    方法1、通过改动addChild函数的第二个參数实现改动ZORDER的值

    将上面的代码中的

    //创建精灵
        CCSprite* sprite1 = CCSprite::create("CloseNormal.png");
        addChild(sprite1);

    改成

    //创建精灵
        CCSprite* sprite1 = CCSprite::create("CloseNormal.png");
        addChild(sprite1, 1);


    运行结果:



    方法2、通过使用setZOrder函数设置ZORDER的值

    在代码中加入

     //使用函数设置ZORDER
        sprite1->setZOrder(1);


    运行结果:


    Tag, 是一个节点的身份证。方便通过getChildByTag来获取节对象
      它的意义在于降低成员变量
      Tag仅仅在同样父节点的节点之间有效
      Tag在同样父节点的儿子之间不能同样。Tag同样情况下。cocos不报错,getChildByTag可能会获取到不是你想要的CCNode
      一般用枚举表示Tag以防止反复

      TAG有时候用来当ID使用。尤其是当多个菜单项使用同一个响应函数时候

    
  • 相关阅读:
    源码浅析:MySQL一条insert操作,会写哪些文件?包括UNDO相关的文件吗?
    20201024 --各位码农,节日快乐
    Redis的基本使用
    Oracle 11g与12c的审计详解
    Mac 终端 Tomcat 环境配置过程
    Oracle查询如何才能行转列?-sunziren
    Redis命令大全
    MySQL8.0数据库基础教程(二)-理解"关系"
    mysql 5.7.28 中GROUP BY报错问题 SELECT list is not in GROUP BY clause and contains no
    Flink知识散点
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7259294.html
Copyright © 2020-2023  润新知