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的值
在代碼中加入
//使用函數設置ZORDERsprite1->setZOrder(1);運行結果:
Tag, 是一個節點的身份證。方便通過getChildByTag來獲取節對象
??它的意義在于降低成員變量
??Tag僅僅在同樣父節點的節點之間有效
??Tag在同樣父節點的兒子之間不能同樣。Tag同樣情況下。cocos不報錯,getChildByTag可能會獲取到不是你想要的CCNode
??一般用枚舉表示Tag以防止反復
??TAG有時候用來當ID使用。尤其是當多個菜單項使用同一個響應函數時候
轉載于:https://www.cnblogs.com/claireyuancy/p/7259294.html
總結
以上是生活随笔為你收集整理的Cocos2d-X中的ZORDER和Tag的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.如何安装Apache Spark
- 下一篇: ajax如何实现、readyState五