程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 【cocos2d-x學習筆記】ZOder、tag、場景切換、精靈的各種創建方式、三個特殊層、坐標體系,cocos2d-xzoder

【cocos2d-x學習筆記】ZOder、tag、場景切換、精靈的各種創建方式、三個特殊層、坐標體系,cocos2d-xzoder

編輯:C++入門知識

【cocos2d-x學習筆記】ZOder、tag、場景切換、精靈的各種創建方式、三個特殊層、坐標體系,cocos2d-xzoder


ZOder:

1、是描述渲染順序的值,每個CCNode都有ZOder,默認是0。

2、ZOder越大則越後面繪制、如果ZOder值相同,那麼看arrival(全局變量每次加一)順序,先加入的節點先繪制,ZOder只在相同父節點的節點直接進行比較

tag:是一個節點的身份證,方便通過getChildByTag來獲取節點對象,它的意義在於減少成員變量

TAG只在相同父節點的節點之間有效

TAG在相同父節點的兒子之間不能相同,相同情況cocos不報錯,getChildByTag可能會獲取到不是你想要的CCNode

一般用枚舉表示TAG以防止重復

TAG有時候用來當ID使用

 

場景切換

CCDirector

runWithScene   運行場景

replaceScene    切換場景 原場景釋放

pushScene        切換場景 原場景保留

popScene          與push配合使用 切換

pause               暫停

resume             這個我忘記了

end                  結束

 

精靈創建

1、通過文件直接創建精靈

CCSprite *sprite = CCSprite::create();

2、通過紋理去創建精靈

CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("blocks.png");

CCSprite *sprite = CCSprite::createWithTextrue(texture);

3、通過精靈幀創建精靈

CCSprtieFrame *frame = CCSprtieFrame::createWithTexture(texture, CCRectMake(0, 0, 80, 80));

CCSprite *sprite = CCSprite::createWithSpriteFrame(frame);

4、通過精靈幀緩存創建精靈

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFrame(frame, "MyFrame");

CCSprite *sprite = CCSprite::createWithSpriteFrameName("MyFrame");

 

三個特殊層

  CCLayerColor            可以改變背景,可以設置大小

CCLayerColor *layer = CCLayerColor::create(ccc4(255, 0, 0, 255), winSize.weith/2, winSize.height/2);

 

  CCLayerGradient        有漸變效果的層(顏色、透明度、方向)

CCLayerGradient *layer = CCLayerGradient::create(ccc4(0, 255, 0, 0), ccc4(0, 0, 255, 255));

 

  CCLayerMultiplex       很少用,可以包含好幾個層,但是只顯示其中一個

CCLayerMultiplex *multi = CCLayerMulitiplex::create(layer1, layer2, NULL);

multi->switchTO(1); // 顯示layer2

 

坐標體系

GL坐標體系:左下角為原點

UI最標體系:左上角為原點

 

世界坐標體系:是窗口的坐標體系,它是GL坐標體系,原點在窗口的左下角

節點坐標體系:是Node的坐標體系,它也是GL坐標體系,和世界坐標體系不同的是,它的原點是節點的左下角。

一個節點調用setPosition時,使用的參數是它的父節點(渲染樹)的坐標體系。

CCLayer默認大小和窗口一樣,所以坐標體系和世界坐標體系重合。

CCScene默認大小和窗口一樣,所以坐標體系和世界坐標體系重合。

 

GL坐標和世界坐標之間的轉換

CCDirector::sharedDirector()->convertToUI();

CCDirector::sharedDirector()->convertToGL();

世界坐標和節點坐標之間的轉換

CCNode::convertoNodeSpace(CCPoint ptInWorld);

CCNode::convertoWorldSpace(CCPoint ptInNode);

按照錨點為原點來進行轉換

CCNode::converToNodeSpaceAR(CCPoint ptInWorld);  返回NODE坐標,以錨點為原點

CCNode::converToWorldSpaceAR(CCPoint ptInNode);

用touth作為參數轉換

CCNode::convertTouchToNodeSpace 直接將觸摸轉換成節點坐標系的坐標

 




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved