裁剪圆角矩形模板

cc.Node.prototype.addClippingCircleRect = function(str, attr){
    var size = attr.size || this.getContentSize();
    var clipSize = attr.clipSize || this.getContentSize();
    var offsetX = attr.offsetX || 0;
    var offsetY = attr.offsetY || 0;
    var radius = attr.radius || 10;

    //圆角层实现代码
    var stencil = new cc.DrawNode();
    stencil.drawRect(cc.p((size.width-clipSize.width)/2+offsetX,(size.height-clipSize.height)/2+offsetY+radius),cc.p((size.width+clipSize.width)/2+offsetX,(size.height+clipSize.height)/2+offsetY-radius),cc.color(0,0,0),1,cc.color(0,0,0));
    stencil.drawRect(cc.p((size.width-clipSize.width)/2+offsetX+radius,(size.height-clipSize.height)/2+offsetY),cc.p((size.width+clipSize.width)/2+offsetX-radius,(size.height+clipSize.height)/2+offsetY),cc.color(0,0,0),1,cc.color(0,0,0));
    stencil.drawCircle(cc.p((size.width-clipSize.width)/2+offsetX+radius,(size.height-clipSize.height)/2+offsetY+radius),radius/3,0,100,false,radius,cc.color(0,0,0));
    stencil.drawCircle(cc.p((size.width+clipSize.width)/2+offsetX-radius,(size.height-clipSize.height)/2+offsetY+radius),radius/3,0,100,false,radius,cc.color(0,0,0));
    stencil.drawCircle(cc.p((size.width+clipSize.width)/2+offsetX-radius,(size.height+clipSize.height)/2+offsetY-radius),radius/3,0,100,false,radius,cc.color(0,0,0));
    stencil.drawCircle(cc.p((size.width-clipSize.width)/2+offsetX+radius,(size.height+clipSize.height)/2+offsetY-radius),radius/3,0,100,false,radius,cc.color(0,0,0));

    var layer = new cc.LayerColor(cc.color(0,0,0),clipSize.width, clipSize.height);
    layer.x = (size.width-clipSize.width)/2+offsetX;
    layer.y = (size.height-clipSize.height)/2+offsetY;
    //层透明度
    layer.opacity = 0;

    var clippingPanel = new cc.ClippingNode();
    clippingPanel.stencil = stencil;
    clippingPanel.addChild(layer);
    this.addChild(clippingPanel);

    var spImg = new cc.Sprite(str);
    //spImg.getTexture().setAliasTexParameters();
    spImg.setAnchorPoint(cc.p(0.5, 0.5));
    spImg.setPosition(cc.p(attr.clipSize.width/2, attr.clipSize.height/2));
    layer.addChild(spImg);

    return spImg;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值