Sprite作为Mask的子节点,不能正确显示图片

1.有个弹窗预制件
2.预制件中有mak及子节点Head来显示圆角头像,mak的父节点没有Sprite组件

Head默认图片:

蒙版图片:带有圆角的纯色图片

遮罩类型:IMAGE_STENCIL

3.在预制件的onLoad中加载微信头像:

 onLoad: function () {
        var that = this;
        var tmpUrl = "http://wx.qlogo.cn/mmopen/G0nq3ehy2ldm6ChpFOAwKMeNquhp0OYngCX9tO4aPPlxRVIEzPIoutdNoZcayvFUxf2kGxBGyQmBlX1ic8am8SicYwrsxqLsSA/0.jpg";
        cc.loader.load(tmpUrl, function (err, texture) {
            if (err) {
                cc.log(err);
                return;
            }
            var frame = new cc.SpriteFrame(texture);
            // that.head.spriteFrame = null;
            that.head.spriteFrame = frame;
        });
     
    },

4.实际显示效果:
打开弹窗之后,微信头像不显示,默认头像也不显示

如果去掉MASK,则显示正常.请问这是什么原因?

请截图发一下你的Mask组件设置,包括用于mask的图片长什么样子,image stencil 模式有个 threshold 选项,设为 0 时不会显示下面的图片

刚才这张上传失败了…

如果加上that.head.spriteFrame = null;这一句,
打开弹窗的时候有几率成功显示头像

@nantas

能不能给我资源或者范例让我测试看看?

你好.现在头像不显示的问题解决了.
原因:
工程中的所有弹窗预制件打开之间,会有一个fadeIn动画,去掉之后显示就正常了.
Mask组件的大小发生变化会导致Mask失效吗?
@Knox

工程中的所有弹窗预制件打开之间,会有一个fadeIn动画 是指什么?我也遇到相同的问题,在模拟器中能显示但是web上不能显示

如果我打开UI的确需要fadein动画呢?想要在保留fadein动画的情况下解决图片不显示的问题,怎么破?

:neutral_face: 话说,不应该是这么写的吗?that.head.getComponent(cc.Sprite).spriteFrame = frame