cocos2dx 坐标系统详解

来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:36 点击:

1、在cocos2dx中,支持以下坐标系:

● 屏幕坐标系: 原点在左上角,X轴向右,Y轴向下。(比如处理触摸事件时CCTouch对象中的坐标就是屏幕坐标系)

● OpenGL坐标系: 原点在左下角,X轴向右,Y轴向上。(比如CCNode类的setPosition函数调用就是此坐标系)

● 世界坐标系:指相对于整个屏幕的坐标系,(0,0)就是屏幕的左下角

● 本地坐标系:相对于父对象的坐标。


2、锚点(AnchorPoint)


● 一句话来描述就是:锚点我们可以看成用一根图钉将一张纸或者相片钉在墙上的那个点。


● 锚点的x和y取值范围在[0,1]之间。


● 精灵(Sprite)的锚点默认为(0.5,0.5),默认是不忽略锚点的,所以

virtual bool isIgnoreAnchorPointForPosition();//默认返回false

● 其他节点比如说CCLayer和CCSense,锚点默认为(0,0),默认是忽略锚点

virtual bool isIgnoreAnchorPointForPosition();//默认返回true


所以,如果要在CCLayer和CCSense中设置锚点,要如下设置

	CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200);	
	addChild(layer1);
	layer1->ignoreAnchorPointForPosition(false);//设置不忽略锚点,此时锚点会变为默认的(0.5,0.5)
	layer1->setAnchorPoint(ccp(0,0));//然后再这里设置自定义锚点


\


<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjxzdHJvbmc+MyDX+LHq16q7u6Osz+rPuL3iys3I58/Co6zTprjD0tG+rcu1tcO63MP3sNfBy6GjPC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPjxicj4KPC9zdHJvbmc+PC9wPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;">CCSprite *sprite1=CCSprite::create("CloseNormal.png"); CCLOG("sprite1=(%f,%f)",sprite1->getContentSize().width,sprite1->getContentSize().height); sprite1->setAnchorPoint(ccp(1,1)); sprite1->setPosition(ccp(20,40)); CCSprite *sprite2=CCSprite::create("CloseNormal.png"); sprite2->setPosition(ccp(-5,-20)); sprite2->setAnchorPoint(ccp(1,1)); CCPoint point1=sprite1->convertToNodeSpace(sprite2->getPosition());//以sprite1左下角为参考点(0,0)定位sprite2锚点的坐标,并返回 CCPoint point2=sprite1->convertToWorldSpace(sprite2->getPosition());//以sprite1左下角为参考点(0,0),定位(-5,20)这个点为sprite2锚点坐标,并返回 CCPoint point3=sprite1->convertToNodeSpaceAR(sprite2->getPosition());//以sprite1的锚点为参考点(0,0),定位sprite2锚点的位置,并返回 CCPoint point4=sprite1->convertToWorldSpaceAR(sprite2->getPosition());//以sprite1的锚点为参考点(0,0),定位定位(-5,20)这个点为sprite2锚点坐标,并返回 CCLOG("point1=(%f,%f)",point1.x,point1.y); CCLOG("point2=(%f,%f)",point2.x,point2.y); CCLOG("point3=(%f,%f)",point3.x,point3.y); CCLOG("point4=(%f,%f)",point4.x,point4.y);


输出结果如下:

sprite1=(40.000000,40.000000) (图片大小)
point1=(15.000000,-20.000000)
point2=(-25.000000,-20.000000)
point3=(-25.000000,-60.000000)
point4=(15.000000,20.000000)

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1