2012
1.9

cocos2d坐标系以及旋转中心(注册点)和Flash中的不同

        学习IOS开发有2个星期了,一边尝试用cocos2d在IOS上重写之前在Flash平台上做的小游戏《勇者的决斗》,betway88,一边摸索学习cocos2d以及Object-c。之前在实际操作过程,发现程序运行得总是很奇怪,后来一段时间的了解和查证后,才发现是cocos2d的坐标系和注册点与Flash有所不同。

        必威体育网址,的坐标系是:x轴从左到右依次递增,y轴是从下倒上依次递增。舞台的原始坐标在屏幕的左下角,而Flash体系中,x轴是从左到右递增,y轴却是从上到下递增,舞台的原始坐标在左上角。因为之前摸索的时候完全不知道这个差异,所以出现一系列莫名其妙的结果⋯⋯

        然后就是coco2d的注册点。在cocos2d中,所有新创建的对象的注册点都是默认在对象的绝对中心上的,betway88,而Flash的注册点则是对象的原始坐标上。Flash要改变注册点,需要改变对象的原始坐标,于是,Flash可以通过像素级别的差异来设置注册点的位置,所以,Flash甚至可以将注册点设置到对象像素之外。例如一个物体宽度为50,高度为50,在Flash中是可以将注册点设置到(-100,-100)的位置上的。cocos2d和Flash相比,注册点差异相差较大。cocos2d是通过object.anchorPoint;来实现的。例如object.anchorPoint = CGPointMake(0, 0)即是将注册点设置到对象的左下角上。默认未设置对象anchorPoint时,对象的注册点是在 CGPointMake(0.5, 0.5)上的,即是对象的绝对中心上。betway88,anchorPoint的值区域是在0-1之间的,0-1是指比例,例如,假如object的宽为50,高为50,object.anchorPoint = CGPointMake(0.2, 0.3),那么这是object的旋转中心和注册点就是在x= 50*0.2,y=50*0.3,即是x=10,y=15的像素位置上。object.anchorPoint = CGPointMake(1, 1)时,注册点在对象的右上角。

        此处记录之,以帮助以后Flash转学IOS的同学快速明白~

评论列表 -2 Responses on this page

王陈翔 发表于: 2012-02-25 12:10
无意闯入
hsinglin 发表于: 2012-02-04 23:51
我放假都没时间学~冏,看来我也要加油了。还有我友情连接更新一下名字哈~~嘿嘿。
Kuma
2012-02-06 16:52
@必威体育网址:哈哈,你这个版本的网站要原来的爽点~

发表评论 - Leave a Reply