cocos2dx 坐标和锚点
来源:互联网 发布:mysql 修改字段注释 编辑:程序博客网 时间:2024/05/23 13:32
cocos2dx中使用opengl坐标系,左下角为坐标原点,在大部分情况下,都是使用这种坐标系的。
当我们创建了一个渲染对象到窗口后,那么这个对象本身也是也是有自己的坐标系的,这种坐标系是节点自己的坐标系,我们称之为节点坐标系,这个坐标系的方向也是左下角为原点。那么相对于节点坐标系,全局坐标系可以称之为世界坐标系。
任何节点的位置值,是参照它父亲节点的坐标系的值。
看例子吧。
// Open ES座标体系 CCSprite* sprite = CCSprite::create("Images/blocks.png"); sprite->setPosition(ccp(300, 300)); addChild(sprite);
当一个对象放在窗口上时,坐标是世界坐标系
// 相对坐标系 CCLayerColor* layer = CCLayerColor::create(ccc4(255, 0, 0, 255), size.width/2, size.height/2); addChild(layer); layer->setPosition(size.width/2, size.height/2); CCSprite* sp2 = CCSprite::create("Images/blocks.png"); layer->addChild(sp2);
我们在窗口上创建一个LayerColor,并且在LayerColor里加入一个精灵,效果如下:
这个精灵并没有通过setPosition去移动位置,那么它的坐标就是0,0
从上图可以看出,后面那个精灵,在LayerColor的左下角,也就是坐标(0,0)的位置。
精灵本身占了一个区域,那么这个区域中,以哪个点作为基准点和坐标点对其呢,看效果是在精灵的中心位置,这个就是锚点的概念了。
----------------------分界线,锚点
锚点的一个作用是用来描述和父节点坐标对齐,另一个作用是在一些效果中,用来作为基准点,这个以后再说。
作为对起点,默认是(0.5, 0.5),这个0.5表示的是50%,而不是0.5个像素,所以精灵是中间与setPosition的坐标点对齐。
修改锚点的结果如下:
// 相对坐标系 CCLayerColor* layer = CCLayerColor::create(ccc4(255, 0, 0, 255), size.width/2, size.height/2); addChild(layer); layer->setPosition(size.width/2, size.height/2); CCSprite* sp2 = CCSprite::create("Images/blocks.png"); layer->addChild(sp2); sp2->setAnchorPoint(ccp(0.0f, 0.0f));
但是锚点这个东西,是很讨厌的,默认0.5,0.5只是精灵对象,层对象就不是,默认是0,0,有些对象更加讨厌的是,锚点对setPosition无效果,比如CCLayerColor
这个对cocos2dx非常鄙视,像我这种老头子,妈蛋,根本记不住那么多,只好随时用随时试了。
----------------对了
坐标系也有特例,就是CCMenu的坐标系是在中间,不是左下角,再次鄙视下cocos2dx开发团队。
- cocos2dx 坐标和锚点
- 【cocos2dx 3.x】锚点不是坐标原点
- cocos2dx : 世界坐标和模型坐标.
- cocos2dx中的坐标系和锚点
- cocos2dx坐标
- Cocos2DX坐标
- 锚点与坐标
- cocos2dx 锚点
- cocos2dx之锚点
- cocos2dx ---- 锚点
- cocos2dx锚点简述
- Cocos2dx坐标系,锚点
- Cocos2dx锚点
- cocos2dx 本地和世界坐标的转换
- CCScene,CCLayer,CCSprite的默认坐标和默认锚点
- CCScene,CCLayer,CCSprite的默认坐标和默认锚点
- cocos2d-x-3.3rc2 坐标转换和锚点
- 关于Cocos2dx的Position和锚点问题
- 关于8259中断几点注意问题(后续会补充)
- Unity学习笔记5 unity的js转c#
- socket 入门
- 在二元树中找出和为某一值的所有路径(树)----面试题系列
- 第一次接触android开发
- cocos2dx 坐标和锚点
- alfresco4.2.f内置服务和启动顺序
- Function对象 , 用来定义方法
- python--打包成可执行文件
- java调用ORACLE存储过程
- ACdream 同心树
- python--py2exe打包方法
- for...in循环
- 杭电4572