设置遮罩的时候图像大小设置不成功如何解决

                let sp_node = new cc.Node("sp_node");
                sp_node.addComponent(cc.Sprite).spriteFrame = frame; //头像图
                
                sp_node.width = 50;
                sp_node.height = 50;
                sp_node.scaleX = 0.5;
                sp_node.scaleY = 0.5;

                let mask = new cc.Node("mask");
                let mask_node = mask.addComponent(cc.Mask);  //设置遮罩层
                mask_node.type = cc.Mask.Type.ELLIPSE;

                mask.parent = node;
                sp_node.parent = mask;

                mask.width = 50;
                mask.height = 50;

我就用了这几行设置遮罩,mask设置成功了,sp_node 的width和height就是不成功,依然是图片的原大小,有大佬遇到过这个问题吗?

刚刚看其他帖子解决了,在设置spriteFrame之前,设置一些sizeMode就可以了

什么 sizeMode ?
我的写法和你的一样,只是某些顺序不一样,但是没有问题呢。

var node = new cc.Node('avatar'); var sp = node.addComponent(cc.Sprite); sp.spriteFrame = new cc.SpriteFrame(texture); var mask = new cc.Node(); var mask_node = mask.addComponent(cc.Mask); mask.parent = self.node; node.parent = mask; node.width = 45; node.height = 45; mask.x = x; mask.y = y; mask_node.type = cc.Mask.Type.ELLIPSE; mask.width = 45; mask.height = 45;

弄一个预制直接就可以看到遮罩效果啊

开始我也这么写的,就是设置不上sprite的宽高,

                let sp_node = new cc.Node("sp_node");
                let sp = sp_node.addComponent(cc.Sprite); //头像图
                sp.sizeMode = cc.Sprite.SizeMode.CUSTOM;
                sp.spriteFrame = frame;

                let mask = new cc.Node("mask");
                let mask_node = mask.addComponent(cc.Mask);  //设置遮罩层
                mask_node.type = cc.Mask.Type.ELLIPSE;

                mask.parent = node;
                sp_node.parent = mask;

                mask.width = 50;//设置遮罩宽50
                mask.height = 50;//设置遮罩高50

                sp_node.width = 50;
                sp_node.height = 50;

我这么弄就可以了

嗯…我先记下了

你出没出现过,设置头像为圆形周边有点毛边的问题啊

我遇到过 ,毛边是有的,如果不能忍就用一个圆形文理 盖上 :relaxed: