Cocos2d-x學(xué)習(xí)筆記之CCScene、CCLayer、CCSprite的默認(rèn)坐標(biāo)和默認(rèn)錨點(diǎn)實(shí)驗(yàn)
結(jié)論:實(shí)踐證明這三個(gè)東西的默認(rèn)坐標(biāo)都是0,0 默認(rèn)錨點(diǎn)都是0.5,0.5。
bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); CCSprite * sprite = CCSprite::create("image1.png"); this->addChild(sprite); //獲得CCSprite的默認(rèn)坐標(biāo),CCSprite設(shè)置坐標(biāo)的時(shí)候是用自己的錨點(diǎn)位置占據(jù)在坐標(biāo)上的。 CCLog("CCSprite.x=%f,CCSprite.y=%f",sprite->getPosition().x,sprite->getPosition().y); //獲得CCSprite的默認(rèn)錨點(diǎn) CCLog("sprite1Anchor.x=%f,sprite1Anchor.y=%f",sprite->getAnchorPoint().x,sprite->getAnchorPoint().y); //獲得CCLayer的默認(rèn)坐標(biāo) CCLog("CCLayer.x=%f,CCLayer.y=%f",this->getPosition().x,this->getPosition().y); //獲得CCLayer的默認(rèn)錨點(diǎn) CCPoint point = this->getAnchorPoint(); CCLog("layerAnchor.x=%f,layerAnchor.y=%f",point.x,point.y); bRet = true; } while (0); return bRet; }
CCScene* HelloWorld::scene() { CCScene * scene = NULL; do { // 'scene' is an autorelease object scene = CCScene::create(); CC_BREAK_IF(! scene); // 'layer' is an autorelease object HelloWorld *layer = HelloWorld::create(); CC_BREAK_IF(! layer); // add layer as a child to scene scene->addChild(layer); layer->show(); } while (0); // return the scene return scene; }
void HelloWorld::show() { //獲得CCScene的默認(rèn)坐標(biāo) CCScene * scene = (CCScene *)this->getParent(); CCLog("CCScene.x=%f,CCScene.y=%f",scene->getPosition().x,scene->getPosition().y); //獲得CCScene的默認(rèn)錨點(diǎn) CCPoint point = scene->getAnchorPoint(); CCLog("SceneAnchor.x=%f,SceneAnchor.y=%f",point.x,point.y); }
這里有一點(diǎn)非常值得注意,就是函數(shù)ignoreAchorPointForPosition(),這個(gè)函數(shù)的意 思是在設(shè)置節(jié)點(diǎn)(包括CCScene,CCLayer,CCSprite)的坐標(biāo)的時(shí)候是否忽略錨點(diǎn),我們都知道在設(shè)置坐標(biāo)的時(shí)候就是用錨點(diǎn)去占據(jù)坐標(biāo)的位置,如果忽略了錨點(diǎn),那么就是以左下角為占據(jù)坐標(biāo)的那個(gè)位置,或者說(shuō)錨點(diǎn)就是左下角的點(diǎn)。 查詢(xún)官方的API得到的結(jié)論是:This is an internal method, only used by CCLayer and CCScene. Don't call it outside framework. The default value is false, while in CCLayer and CCScene are true。這個(gè)函數(shù)的默認(rèn)值是false,但是對(duì)于CCScene和CCLayer它的值是true。如果是這樣的話(huà),我們?cè)谠O(shè)置CCScene和CCLayer的坐標(biāo)的時(shí)候就是以 左下角為錨點(diǎn)的,而不是(0.5,0.5)。但是對(duì)于CCSprite來(lái)說(shuō)正好是相反的,它對(duì)于這個(gè)函數(shù)的默認(rèn)值就是false,也就是錨點(diǎn)就是它 本身的默認(rèn)錨點(diǎn)(0.5,0.5)。
相關(guān)文章
C語(yǔ)言編程時(shí)常犯十八個(gè)錯(cuò)誤小結(jié)
C語(yǔ)言的最大特點(diǎn)是:功能強(qiáng)、使用方便靈活。C編譯的程序?qū)φZ(yǔ)法檢查并不象其它高級(jí)語(yǔ)言那么嚴(yán)格,這就給編程人員留下“靈活的余地”,但還是由于這個(gè)靈活給程序的調(diào)試帶來(lái)了許多不便,尤其對(duì)初學(xué)C語(yǔ)言的人來(lái)說(shuō),經(jīng)常會(huì)出一些連自己都不知道錯(cuò)在哪里的錯(cuò)誤2013-07-07C語(yǔ)言中g(shù)etchar()函數(shù)的用法小結(jié)
這篇文章主要介紹了C語(yǔ)言中g(shù)etchar()函數(shù)的用法,getchar是輸入函數(shù),輸入的過(guò)程是什么呢,本文給大家詳細(xì)講解,對(duì)C語(yǔ)言getchar()函數(shù)相關(guān)知識(shí)感興趣的朋友一起看看吧2022-10-10詳解C語(yǔ)言中的rename()函數(shù)和remove()函數(shù)的使用方法
這篇文章主要介紹了詳解C語(yǔ)言中的rename()函數(shù)和remove()函數(shù)的使用方法,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09C++實(shí)現(xiàn)FTP綜合應(yīng)用詳解
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)FTP綜合應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C語(yǔ)言?深入理解動(dòng)態(tài)規(guī)劃之計(jì)數(shù)類(lèi)DP
動(dòng)態(tài)規(guī)劃可謂是大名鼎鼎,筆試面試中的高頻考點(diǎn),也是重點(diǎn)難點(diǎn),動(dòng)態(tài)規(guī)劃類(lèi)型題目靈活多變,難度系數(shù)也相對(duì)較高,往往我們做不好動(dòng)態(tài)規(guī)劃的題目就會(huì)與心儀的offer失之交臂,本篇文章我們就一起來(lái)研究一下動(dòng)態(tài)規(guī)劃的計(jì)數(shù)類(lèi)DP2022-04-04CISBitmap派生的VC++位圖透明類(lèi)實(shí)例
這篇文章主要介紹了CISBitmap派生的VC++位圖透明類(lèi),比較實(shí)用的功能,需要的朋友可以參考下2014-08-08