cocos2dx cocos2d-x AnchorPoint锚点

锚点是定位和变换操作的一个重点。锚点我们可以看成用一根图钉将一张纸或者相片钉在墙上的那个点。

节点的位置是由我们设置的positionanchor point一起决定的。

值得一提的是,anchor point的默认位置Layer的是左下,而其他的node是中点。

节点的原点是父节点的左下角。

[cpp]  view plain copy
  1. CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200);  
  2. CCLayer* layer2 = CCLayerColor::create(ccc4(255,255,0,255), 100, 100);  
  3.           
  4. addChild(layer1);  
  5. layer1->addChild(layer2);  

[cpp]  view plain copy
  1. layer2->setPosition(50,50);  

可见Layer的锚点是左下角,节点的原点是父节点的左下角。

再看一个:

[cpp]  view plain copy
  1. CCSprite *p1 = CCSprite::create("HelloWorld.png", CCRectMake(100, 100, 100, 100));  
  2. CCSprite *p2 = CCSprite::create("girl1.png");  
  3. addChild(p1);  
  4. p1->addChild(p2);   //p2作为p1的子节点  
  5. setPosition(200,200);  // Layer 的原点移到200,200  


设置锚点:

LayerSprite有不同,layer要设置锚点,必须先:ignoreAnchorPointForPosition(false);

[cpp]  view plain copy
  1.     CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200);  
  2.     CCLayer* layer2 = CCLayerColor::create(ccc4(255,255,0,255), 100, 100);  
  3.     addChild(layer1);  
  4.     layer1->addChild(layer2);  
  5. /*  layer1->ignoreAnchorPointForPosition(false);*/  
  6.     layer1->setAnchorPoint(ccp(0.5,0.5));  

[cpp]  view plain copy
  1. CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200);  
  2. CCLayer* layer2 = CCLayerColor::create(ccc4(255,255,0,255), 100, 100);    
  3. addChild(layer1);  
  4. layer1->addChild(layer2);  
  5. layer1->ignoreAnchorPointForPosition(false);  
  6. layer1->setAnchorPoint(ccp(0.5,0.5));  

Sprite不用设置即可。

[cpp]  view plain copy
  1. CCSprite *p1 = CCSprite::create("HelloWorld.png", CCRectMake(100, 100, 100, 100));  
  2. CCSprite *p2 = CCSprite::create("girl1.png");  
  3. addChild(p1);  
  4. p1->addChild(p2);  
  5. p2->setAnchorPoint(ccp(1,1));  
  6. setPosition(200,200);  

和前面第三个图比较一下就了解了。小女孩的锚点已经到了红色点位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值