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 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

JavaScript强化教程——Prototype

本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— Prototype 引用 Prototype 如需测试 Jav...

2019
来自专栏拂晓风起

Flash:DisplayObject的transform/matrix的潜规则、小bug

1232
来自专栏程序员叨叨叨

Andorid自定义控件属性值设置

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

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

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

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

2224
来自专栏自动化测试实战

HTML第二课——css【2】

2259
来自专栏Linux驱动

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

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

954
来自专栏LeoXu的博客

Flex笔记_处理用户输入 原

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

682
来自专栏Windows Community

New UWP Community Toolkit - RotatorTile

概述 UWP Community Toolkit  中有一个为图片或磁贴提供轮播效果的控件 - RotatorTile,本篇我们结合代码详细讲解  Rotato...

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

[Silverlight 4 RC]RichTextBox概览

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

1848
来自专栏HT

基于HTML5的WebGL实现的2D3D迷宫小游戏

为了实现一个基于HTML5的场景小游戏,我采用了HT for Web来实现,短短200行代码,我就能实现用“第一人称”来操作前进后退上下左右,并且实现了碰撞检测...

2327

扫码关注云+社区