请问如何动态增加遮盖层 mask 并设为圆形生效

  • Creator 版本:v1.9.1

我就是想动态生成一个 mask 层,并在mask 下放置了一个 Sprite ,是一张图片,mask 层修改为圆,然后做成一个圆形头像。
我这样写的


      var avatar = new cc.Node('avatar');
      var sp = node.addComponent(cc.Sprite);
      sp.spriteFrame = new cc.SpriteFrame(texture);
      var mask = new cc.Node('mask');
      mask.parent = self.node;
      avatar.parent = mask;
      avatar.width = 50;
      avatar.height = 50;
      mask.x = -138;
      mask.y = 233;
      mask.type = cc.Mask.Type.ELLIPSE; // 这样写有问题吗?
      console.log(mask)
      mask.width = 50;
      mask.height = 50;

mask.type = cc.Mask.Type.ELLIPSE;
是按照下图写的

请问是哪里写得不对吗?谢谢。

你的mask只是一个node,没有Mask在里面[quote=“ilikeshoot, post:1, topic:61314”]
var mask = new cc.Node(‘mask’);
[/quote]

那应该是怎么创建的啊?真正的创建出一个 mask ?谢谢。

var node = new cc.Node();
mask = node.addComponent(cc.Mask);

谢谢,我改成这样,就没有问题了,谢谢提示


      var avatar = 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
      mask.parent = self.node;
      // mask_node.parent = mask;
      avatar.parent = mask;
      avatar.width = 50;
      avatar.height = 50;
      
      mask.x = -138;
      mask.y = 233;
      mask_node.type = cc.Mask.Type.ELLIPSE; // 这里才是 mask_node 设置为圆
      console.log(mask)
      mask.width = 50;
      mask.height = 50;

现在的mask似乎添加之后_graphics 为空,设置type之后就触发_updateGraphics 就报错了。。。