2012-07-17 67 views
2

我有一個精靈添加到圖層。我在轉換圖層時遇到了很多問題。據我所知,一個圖層的左下角有一箇中心(anchorPoint),一個圖層在中間(右?) - 我對此並不完全確定。Cocos2D 2.0 - 在圖層中添加一個精靈...中心怎麼樣?

在下圖中,我代表粉紅色的CClayer和紫色的CCSprite。看看我認爲這些中心在哪裏。

當我將一個精靈添加到一個圖層中時,我認爲科科斯會像在A中那樣做,但我希望它像在B中一樣。我該怎麼做?另一種可能性是C,我認爲它更好,但是這將涉及將圖層的錨點移動到中間並將精靈放在那裏......我對於如何做到這一點毫無頭緒。

enter image description here

回答

3

更改CCSprite的錨點。

CCSprite *sprite = [CCSprite spriteWithFile:@"sprite.png"]; 

//For case A 
sprite.anchorPoint = ccp(0.0f,0.0f); 
sprite.position = ccp(0.0f,0.0f); 

//For case B 
sprite.anchorPoint = ccp(0.5f,0.5f); 
sprite.position = ccp(0.0f,0.0f); 


//For case c 
sprite.position = ccp(ScreenWidth/2.0f, ScreenHeight/2.0f); 
sprite.anchorPoint = ccp(0.5f,0.5f); 
+0

謝謝。這解釋了很多。我希望科科斯有一本手冊來解釋它是如何工作的,而不是一系列模糊的參考文獻。我很難忍受他們從未解釋過的關鍵概念。 – SpaceDog 2012-07-18 05:45:40

+0

謝謝!!!!!!!!! – SpaceDog 2012-07-18 06:22:09

-1

當我添加一個精靈一層,我覺得科科斯會做像在,但我 希望它像B.

不要試圖猜測行爲。將精靈添加到圖層並查看會發生什麼。

此外,CCNode及其所有子類,包括CCSprite,有position屬性,它代表了節點相對於其父的原點位置。

+1

不要猜測行爲,添加並看看會發生什麼...奇怪的建議。像「不要爲你的progect計劃架構」 – Morion 2012-07-17 15:20:01

0

定位點是相對座標。 (0.f,0.f)是節點的左下角,(1.f,1.f)是右上角。所有的轉變都是與定位點相關的。定位也是變革。這意味着,在錨點(0.5f,0.5f)的情況下,所有定位和其他變換都將被應用到節點的中心。如果要將精靈放置到圖層的左下角,可以簡單地將其定位到(0.f,0.f)和設置位置(0.f,0.f)。這意味着你的精靈的左下角將被放置到你父層的(0.f,0.f)座標上。

[sprite setAnchorPoint:ccp(0.f, 0.f)]; 
[sprite setPosition:ccp(0.f, 0.f)]; 
[layer addChild:sprite];