在cocos2d-x-3.16版本使用csb加载界面,对于子控件进行clone操作时,如果子控件中有旋转(Rotation)操作,会在底层报错,原因显示:
CCNode#rotation. RotationX != RotationY. Don't know which one to return
原断言为:
CCASSERT(_rotationZ_X == _rotationZ_Y, "CCNode#rotation. RotationX != RotationY. Don't know which one to return");
跟踪代码发现使用clone后的旋转控件RotationX和RotationY属性不相等,有0.0001大小误差,此处无需使用精确浮点数比较误差,可能是csb底层控件bug,解决办法如下:
CCNode.cpp
/// rotation getter
float Node::getRotation() const
{
CCASSERT((std::abs(_rotationZ_X - _rotationZ_Y) < 0.001f), "CCNode#rotation. RotationX != RotationY. Don't know which one to return");
return _rotationZ_X;
}