cocos2d 3.x中,引擎坐标处理方式不一致,被坑吐血了
- by Hector
cocos2d 3.x中,引擎坐标处理方式不一致,被坑吐血了
ProtectedNode,Node的锚点都是(0,0)其余的sprite,widget,layer都是(0.5,0.5)。
为了简化描述,下面所有的控件锚点都是默认的(0.5,0.5)
在 beta2之前:
- widget添加子widget都是在中心,这点跟cocostudio是一致的。
- 其他sprite,layer添加子layer,sprite都是在左下角。
这两个不同我忍了。
在3.0正式版:
- widget添加子widget跟sprite,layer一样了,都是左下角。(升级都要改坐标,我忍了)
- cocostudio ui解析会错位,后面出了下面这个帖子:
【通知】Cocos2dx 3.0正式版本UI解析错乱解决方案
注意改动的代码,setPosition的时候将原来本来坐标是(0,0)的坐标硬生生加上了父控件的锚点偏移,这样达到了和UI编辑器看到的是一致的。
你也许会想,我明明在编辑器里面设置的是(0,0)的坐标,怎么变了呢? 我说:呵呵
在cocos2d-js alpha2 :
widget添加子widget,在浏览器里面是中心,在手机里面又是左下角~~~~
一处编写,到处运行,你得加上下面的代码吧,我说,呵呵~~~
if(cc.sys.isNative) { child.setPosition(father.getSize().width / 2, father.getSize().height / 2); }