cocos2d-x AnchorPoint锚点

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

节点的位置是由我们设置的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);  

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xx_Cc的学习总结专栏

iOS-UITextField 全面解析iOS中UITextField 使用全面解析UITextField的代理方法通知UITextField 在storyboard 中设置属性

4066
来自专栏hightopo

基于 HTML5 Canvas 的 3D 模型贴图问题

872
来自专栏爆栈之路

【开源】微信小程序、小游戏以及 Web 通用 Canvas 渲染引擎 - Cax

用于分组, group 也可以嵌套 group,父容器的属性会叠加在子属性上, 比如:

60116
来自专栏我和未来有约会

[Silverlight 4 RC]RichTextBox概览

我们知道在silverlight 4 beta的时候增加了RichTextArea的控件。做过RIA开发的朋友富媒体在动态文本的表现渲染方面是很弱的。我们看到的...

1728
来自专栏非典型技术宅

简单放置一张图片,实现放大缩小旋转效果1 image和imageView的区别2 创建控件显示到view上的标准步骤3 CGRectOffset函数的含义4 小飞机-监听四个按钮的点击事件(代码)5

1093
来自专栏Linux驱动

24.QTableView函数使用,右击菜单实现

对于QStandardItem的setData()成员 函数的第二个参数role 是模型数据角色 

834
来自专栏Java帮帮-微信公众号-技术文章全总结

WAI-ARIA无障碍网页应用属性完全展示

WAI-ARIA指无障碍网页应用。主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员。尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏...

1634
来自专栏程序员叨叨叨

Andorid自定义控件属性值设置

今天写一个简单的自定义控件,实现宽固定,高度根据自定义宽高比例自动调整;或高固定,宽度随比例调整。其中有一个 solid属性,想要像android:layout...

842
来自专栏LeoXu的博客

Flex笔记_处理用户输入 原

        Label、RichText、RichEditableText、TextInput、TextArea、RichTextEditor(MX)

652
来自专栏HT

基于 HTML5 Canvas 的 3D 模型列表贴图

少量图片对于我们赋值是没有什么难度,但是如果图片的量大的话,我们肯定希望能很直接地显示在界面上供我们使用,再就是排放的位置等等,这些都需要比较直观的操作,在实际...

23410

扫码关注云+社区