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è)位置,或者說錨點(diǎn)就是左下角的點(diǎ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,但是對于CCScene和CCLayer它的值是true。如果是這樣的話,我們在設(shè)置CCScene和CCLayer的坐標(biāo)的時(shí)候就是以 左下角為錨點(diǎn)的,而不是(0.5,0.5)。但是對于CCSprite來說正好是相反的,它對于這個(gè)函數(shù)的默認(rèn)值就是false,也就是錨點(diǎn)就是它 本身的默認(rèn)錨點(diǎn)(0.5,0.5)。
相關(guān)文章
C語言編程時(shí)常犯十八個(gè)錯(cuò)誤小結(jié)
C語言的最大特點(diǎn)是:功能強(qiáng)、使用方便靈活。C編譯的程序?qū)φZ法檢查并不象其它高級語言那么嚴(yán)格,這就給編程人員留下“靈活的余地”,但還是由于這個(gè)靈活給程序的調(diào)試帶來了許多不便,尤其對初學(xué)C語言的人來說,經(jīng)常會(huì)出一些連自己都不知道錯(cuò)在哪里的錯(cuò)誤2013-07-07
C語言中g(shù)etchar()函數(shù)的用法小結(jié)
這篇文章主要介紹了C語言中g(shù)etchar()函數(shù)的用法,getchar是輸入函數(shù),輸入的過程是什么呢,本文給大家詳細(xì)講解,對C語言getchar()函數(shù)相關(guān)知識(shí)感興趣的朋友一起看看吧2022-10-10
詳解C語言中的rename()函數(shù)和remove()函數(shù)的使用方法
這篇文章主要介紹了詳解C語言中的rename()函數(shù)和remove()函數(shù)的使用方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
C++實(shí)現(xiàn)FTP綜合應(yīng)用詳解
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)FTP綜合應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語言?深入理解動(dòng)態(tài)規(guī)劃之計(jì)數(shù)類DP
動(dòng)態(tài)規(guī)劃可謂是大名鼎鼎,筆試面試中的高頻考點(diǎn),也是重點(diǎn)難點(diǎn),動(dòng)態(tài)規(guī)劃類型題目靈活多變,難度系數(shù)也相對較高,往往我們做不好動(dòng)態(tài)規(guī)劃的題目就會(huì)與心儀的offer失之交臂,本篇文章我們就一起來研究一下動(dòng)態(tài)規(guī)劃的計(jì)數(shù)類DP2022-04-04

