cocos2dx 3.3 Label 渲染的bug

在场景中添加了一个摄像机,创建一个label,加在一张图片上,add到场景中,当场景移动的时候,图片的坐标是正常的,label却跟随摄像机动,完全不跟着图片动

看了下label visit的渲染逻辑,如下
void Label::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags)
{
if (! _visible || _originalUTF8String.empty() || !isVisitableByVisitingCamera())
{
return;
}
if (_systemFontDirty)
{
updateFont();
}
if (_contentDirty)
{
updateContent();
}
uint32_t flags = processParentFlags(parentTransform, parentFlags);
。。。。。。。。。。。。。。

出现的原因在于isVisitableByVisitingCamera()判断之后就直接返回了,没有processParentFlags(parentTransform, parentFlags);
由于camera是先遍历新添加的摄像机,再遍历默认摄像机。
遍历新摄像机的时候,由于label是使用默认摄像机,所以直接return,不会processParentFlags(parentTransform, parentFlags);
遍历默认摄像机的时候,会处理processParentFlags(parentTransform, parentFlags);
但是此时父节点的转换其实已经没有了,也就是parentFlags为false!!!

所以你会看到label不会跟随父节点,因为一直没有处理父节点的转换