cocos: 出现类似RotationX!=RotationY的问题

    在对一个csb的Panel执行copy时发现下面如图的错误,让人很难受。

  cocos: 出现类似RotationX!=RotationY的问题   

因为在cocos studio里面的新增的ImageView导致的这个问题,就查cocos源码发现在Node:getRotation中出现问题

cocos: 出现类似RotationX!=RotationY的问题

怀疑_rotationZ_X和_rotationZ_Y是浮点数,直接用==比较会出问题。

通过修改cocos studio里面这个imageView的旋转角度不一样,确实会出现问题

cocos: 出现类似RotationX!=RotationY的问题

但奇怪的是通过旋转得到的旋转角度一样,但是还是会出现奔溃的现象。只能继续查源码了

cocos: 出现类似RotationX!=RotationY的问题

通过加断点,发现value的值并不是我们cocos studio里面旋转得到的值,它们的值是精确到小数点后4位,而cocos studio只显示到小数点后两位,我们有理由判断是cocos studio的缺陷,导致只显示两位小数,后面的两位没显示而已。

cocos: 出现类似RotationX!=RotationY的问题

通过尝试手动输入到小数点四位以后,例如:-8.2701(但还是显示-8.27,这个没关系),重新发布出来,ok, 解决问题。


另:

通过cocos-2dx源码去加载csd并转成csb,然后就可以通过断点看旋转角度。

1.在cocos2d-x-3.16\cocos2d-x-3.16\build目录下打开cocos2d-win32.sln

2.编译

3.选择cpp-empty-test这个空工程,打开HelloWorldScene.cpp,在HelloWorld::init()中输入如下:

   cocos: 出现类似RotationX!=RotationY的问题

并在前面加入需要包含的头文件。

cocos: 出现类似RotationX!=RotationY的问题

 serializeFlatBuffersWithXMLFile这个接口就是要把csd文件按格式转成csb文件的过程,在这个过程中会走到之前说的那个断点。