Cocos2D 2.0 - 向图层添加一个精灵......中心怎么样?

时间:2012-07-17 02:09:59

标签: cocos2d-iphone

我有一个精灵添加到图层。当我转换图层时,我遇到了很多问题。据我所知,一个图层的左下角有一个中心(anchorPoint),一个图层位于中间(右边?) - 我对此并不完全确定。

在下图中,我代表粉红色的CClayer和紫色的CCSprite。看看我认为中心在哪里。

当我向一个图层添加一个精灵时,我认为Cocos会像A一样,但我想要它像B一样。我该怎么做?另一种可能性是C,我认为更好,但这将涉及将图层的anchorPoint移动到中间并将精灵放在那里......我不知道如何做到这一点。

enter image description here

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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];

答案 2 :(得分:-1)

  

当我向一个图层添加一个精灵时,我认为Cocos会像A一样,但是我   想要像B一样。

不要试图猜测行为。将精灵添加到图层,看看会发生什么。

此外,CCNode及其所有子类(包括CCSprite)都具有position属性,表示节点相对于其父源的位置。