cocos2d-x_AnchorPoint锚点

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

节点的位置是由我们设置的position和anchor 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

设置锚点:

Layer和Sprite有不同,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);

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

时间: 2024-11-03 21:35:22

cocos2d-x_AnchorPoint锚点的相关文章

cocos2d中锚点概念

这两天看了下锚点的概念. /** * Sets the anchor point in percent. * * anchorPoint is the point around which all transformations and positioning manipulations take place. * It's like a pin in the node where it is "attached" to its parent. * The anchorPoint is

Cocos2d-x学习(3) - cocos2d坐标系,锚点

1.OpenGL的坐标系 Cocos2d是基于OpenGL开发的,所以Cocos2d的坐标系和OpenGL的坐标系是一致的,都是按照图示方向.和我们平时最常见到的坐标系也是一致的. 2.屏幕坐标系 屏幕坐标系是界面编程中很常见的坐标系.它规定的则是屏幕的左上角为坐标原点,向右为X轴正方向,向下为Y轴正方向.这个相比OpenGL坐标系,X轴方向其实是一致的,不同就在与Y轴方向. 3.元素的位置 每个元素的坐标系都是相对于其父节点的,也就是说如果父节点移动那么该父节点下的元素坐标也是相对移动的.就像

Cocos2d入门--1-- 初涉相关属性或代码

 Cocos2d入门--1-- 初涉相关属性或代码 Cocos2d vision:  cocos2d-x-3.8.1 万丈高楼,起于累土.对于一个游戏框架的学习,其实在于框架功能的使用积累,学会了如何在cocos2d游戏引擎的基础上使用它提供的各种功能,并灵活运用, 以及学会查阅Cocos2d官方提供的API文档.相信自己也能开发出自己喜爱或者让别人羡慕的游戏. 目录: 1>认识origin和visibleSize以及cocos2d的基础绘画类DrawNode的简单实用 2>认识 CCLOG(

什么是锚点(AnchorPoint)

1.锚点通常是图形的几何中心, AnchorPoint(x,y)的两个参量x和y的取值通常都是0到1之间的实数,表示锚点相对于节点长宽的位置. 例如,把节点左下角作为锚点,值为(0,0): 把节点的中心作为锚点,值为(0.5,0.5): 把节点右下角作为锚点,值为(1,0). 精灵的AnchorPoint默认值为(0.5,0.5),其他节点的默认值为(0,0),如CCLayer. 相关的操作:setAnchorpoint(0,0); 影响: 1.挂载位置,   2.缩放,     3.旋转 my

ios中关于对锚点的理解

锚点在ios中见到的地方不多,大部分用在动画中. 今天看到一个动画,上面都是关于锚点的,锚点这个概念在两年前看cocos2d得基本概念时接触过,当时没怎么看,今天看到了,就在好好的学一下. 看了一篇blog,是关于锚点的,就借鉴一些上面的图像: cocos2d里采用OpenGL ES坐标系,坐标原点在屏幕左下角.而ios采用的是Quartz 2D坐标系,坐标原点在屏幕左上角. 在cocos2d和ios中分别把视图的坐标点设为(10,10),结果如下: 那么什么是锚点呢?下面以一个例子来说明: 比

Cocos2d坐标系转换

Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系(高中数学里面那种). 笛卡尔坐标系 笛卡尔坐标系中定义右手系原点在左下角,x向右,y向上,z向外,OpenGL坐标系为笛卡尔右手系. 屏幕坐标系和Cocos2d坐标系 标准屏幕坐标系使用和OpenGL不同的坐标系,而Cocos2d则使用和OpenGL相同的坐标系. iOS, Android, Windows Phone等在开发应用时使用的是标准屏幕坐标系,原点为屏幕左上角,x向右,y向下. Cocos2d坐标系和OpenG

编写MyLayer,2 锚点,3 精灵的创建,4 zorder

?? 1 编写MyLayer 头文件:MyLayer.h #include "cocos2d.h" USING_NS_CC;   //代表的是: using namespace cocos2d   (通过F12进行查看) //继承CCLayer class MyLayer :public CCLayer { public: //没有构造函数和析构函数 CREATE_FUNC(MyLayer); /*static MyLayer *create();*/ static CCScene *

cocos2d基本类介绍 director/scene/layer/sprite

[核心类]     导演Director.场景Scene.布景层Layer.精灵Sprite的概念请移步:     导演控制场景,场景控制图层,图层控制精灵,精灵控制动作.     相互之间的关系框架如下图所示:     由此看出:         (1)整个游戏一般只有一个导演.         (2)一个游戏可以由多个场景组成(菜单界面.游戏界面.游戏结束界面等),但是每次导演只能指导一个场景的运作.         (3)一个场景可以由多个图层组成(背景层.道具层.英雄层.怪物层等,每个图

Cocos2d之Node类详解之节点树(一)

一.声明 笔者分析的是用C++语言实现.版本号为cocos2d-x-3.3rc0的cocos2d框架的源代码.本文为笔者原创,允许读者分享和转载,只要读者注明文章来源即可. 二.简介 Node对象时场景图的基本元素,并且场景图的基本元素必须是Node对象和Node的子类对象.常见的Node类的子类有:Scene.Layer.Sprite.Menu和Label类. Node类主要实现几个特性: Node对象的 addChild(Node *child).getChildByTag(int tag)

1.04 锚点

一.锚点影响了什么 1.锚点影响 放置位置 2.锚点影响 缩放 --- 缩放是围绕锚点旋转的 3.锚点影响 旋转 --- 通常情况下,旋转是围绕锚点进行 二.忽略锚点 1.忽略锚点 --- 将锚点置成 0,0 2.通常情况下,Scene 是忽略锚点的 三.源代码 1.头文件 #ifndef _T01LayerAnchorPoint_H_ #define _T01LayerAnchorPoint_H_ #include "cocos2d.h" USING_NS_CC; //锚点 clas