专栏首页转载gongluck的CSDN博客cocos2d-x AnchorPoint锚点

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

相关文章

  • cocos2dx 钢琴

    #include "PianoScene.h" #include "SimpleAudioEngine.h" USING_NS_CC; Scene* Pia...

    _gongluck
  • GDI+编程

    Hi,蜜蜡。 今天写了个GDI+的应用,基本功能就是显示图片的。GDI的话对除了BMP之外的图片格式都不太友善,极度影响用户体验啊。GDI+的话,感觉就比GDI...

    _gongluck
  • cocos2dx 打灰机

    #include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

    _gongluck
  • /自动化测试/ puppeteer API详解(一):puppeteer模块API

    在环境搭建章节介绍了如何使用puppeteer模块来启动Chromium实例,本篇开始puppeteer的API详细学习计划

    测试邦
  • Excel公式技巧23: 同时定位字符串中的第一个和最后一个数字

    在很多情况下,我们都面临着需要确定字符串中第一个和最后一个数字的位置的问题,这可能是为了提取包围在这两个边界内的子字符串。然而,通常的公式都是针对所需提取的子字...

    fanjy
  • 漏洞|74cms 3.6 前台SQL注入+Python脚本小练习

    最近有个74cms v4.2.3任意文件下载的漏洞,本来想试着和74cms 3.6 前台SQL注入漏洞结合下然后取出QS_pwdhash的值进行MD5碰撞,可...

    漏斗社区
  • 【分类战车SVM】第三话:最大间隔分类器

    分类战车SVM (第三话:最大间隔分类器) 查看本《分类战车SVM》系列的内容: 第一话:开题话 第二话:线性分类 第三话:最大间隔分类器 第四话:拉格朗日对偶...

    数说君
  • go基础入门(六)

    上篇文章我们简易学了struct今天我们来继续深入的理解一下struct,为了更好的学些struct我们今天首选要先了解一下interface。

    大话swift
  • MVC中JSON字符长度超出限制的异常处理

    使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。

    sherlock99
  • 机器学习sklearn线性回归

    回归算法是机器学习的一个基础算法,简单的就是线性回归,还有非线性回归。本节我们讲解简单的线性回归。

    老钱

扫码关注云+社区

领取腾讯云代金券