现在知道锚点cc.p(0,0)代表的是默认的左下角,cc.p(0.5,0.5)则是以物体中心点为坐标点,cc.p(1,1)代表右上角。
锚点被用在一个对象的定位和旋转。锚点坐标是相对坐标,举例来说,在Cocos2d中简化定义为cc.p(0,0)的锚点对应于那个对象的左下角, 同时cc.p(0.5,0.5)对应于对象的中心。当设置一个对象的位置时,这个对象被定位以致于锚点会位于setPosition()函数调用所指定的坐标。同样地,当旋转一个对象,它是绕着锚点旋转的。
例如,这个精灵有一个cc.p(0,0)的锚点和一个cc.p(0,0)的位置。
1
2
3
4
5
6
7
8
9
|
// create sprite
var sprite = cc.Sprite.create (
"bottomleft.png"
) ;
sprite.attr({
x: 0,
y: 0,
anchorX: 0,
anchorY: 0
});
this
.addChild ( sprite ) ;
|
以下是原文地址:http://blog.csdn.net/xuguangsoft/article/details/8425623
锚点是定位和变换操作的一个重点。锚点我们可以看成用一根图钉将一张纸或者相片钉在墙上的那个点。
节点的位置是由我们设置的position和anchor point一起决定的。
值得一提的是,anchor point的默认位置Layer的是左下,而其他的node是中点。
节点的原点是父节点的左下角。
- CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200);
- CCLayer* layer2 = CCLayerColor::create(ccc4(255,255,0,255), 100, 100);
- addChild(layer1);
- layer1->addChild(layer2);
- layer2->setPosition(50,50);
可见Layer的锚点是左下角,节点的原点是父节点的左下角。
再看一个:
- CCSprite *p1 = CCSprite::create("HelloWorld.png", CCRectMake(100, 100, 100, 100));
- CCSprite *p2 = CCSprite::create("girl1.png");
- addChild(p1);
- p1->addChild(p2); //p2作为p1的子节点
- setPosition(200,200); // Layer 的原点移到200,200
设置锚点:
Layer和Sprite有不同,layer要设置锚点,必须先:ignoreAnchorPointForPosition(false);
- CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200);
- CCLayer* layer2 = CCLayerColor::create(ccc4(255,255,0,255), 100, 100);
- addChild(layer1);
- layer1->addChild(layer2);
- /* layer1->ignoreAnchorPointForPosition(false);*/
- layer1->setAnchorPoint(ccp(0.5,0.5));
- CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200);
- CCLayer* layer2 = CCLayerColor::create(ccc4(255,255,0,255), 100, 100);
- addChild(layer1);
- layer1->addChild(layer2);
- layer1->ignoreAnchorPointForPosition(false);
- layer1->setAnchorPoint(ccp(0.5,0.5));
而Sprite不用设置即可。
- CCSprite *p1 = CCSprite::create("HelloWorld.png", CCRectMake(100, 100, 100, 100));
- CCSprite *p2 = CCSprite::create("girl1.png");
- addChild(p1);
- p1->addChild(p2);
- p2->setAnchorPoint(ccp(1,1));
- setPosition(200,200);
和前面第三个图比较一下就了解了。小女孩的锚点已经到了红色点位置