日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocos2d-X中的ZORDER和Tag

發布時間:2024/9/5 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。