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

相关文章

来自专栏Java Edge

Spring Security源码分析之SecurityContextPersistenceFilter

2588
来自专栏Kubernetes

深度解析Kubernetes Local Persistent Volume(二)

摘要:上一篇博客”深度解析Kubernetes Local Persistent Volume(一)“对local volume的基本原理和注意事项进行了分析,...

1983
来自专栏Hadoop实操

Hive创建外部表CSV数据中列含有逗号问题处理

在不能修改示例数据的结构情况下,这里需要使用Hive提供的Serde,在Hive1.1版本中提供了多种Serde,此处的数据通过属于CSV格式,所以这里使用默认...

1035
来自专栏乐沙弥的世界

Linux/Unix shell 自动导出Oracle数据库

       使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备...

652
来自专栏高性能服务器开发

从零学习开源项目系列(四)LogServer源码探究

这是从零学习开源项目的第四篇,上一篇是《从零学习开源项目系列(三) CSBattleMgr服务源码研究》,这篇文章我们一起来学习LogServer,中文意思可能...

1332
来自专栏编码小白

ofbiz实体引擎(九) 多租户

多租户在平台中是根据delegator不同操作不同的数据库 /** * @author 郑小康 * 设置完整的delegator 其可...

3004
来自专栏瓜大三哥

AXI Bridge 和AXI Interconnect

AXI bridge 可以转接PCIe总线提供AXI4嵌入式系统和PCIe系统。 ? 它包括内存从AXI4映射到AXI4-Stream桥和AXI4-Stre...

2767
来自专栏乐沙弥的世界

Linux/Unix shell 自动发送AWR report

     观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过...

653
来自专栏Netkiller

Email 服务器之 SPF 记录

节选自《Netkiller Mail 手札》 6.1. Sender Policy Framework 6.1.1. 分析 SPF 记录 从主域开始查看 txt...

3386
来自专栏C++

Windows核心编程:第4章 进程

1073

扫码关注云+社区