AS2边缘柔化类

// Soft Edge Prototype
// 
// V1.0 by Mario Klingemann
// www.quasimondo.com
//
// Usage:
// MovieClip.softEdge(Blur Radius,Background Color);

MovieClip.prototype.drawRect2 = function(x1, y1, x2,y2) {
    this.moveTo(x1, y1);
    this.lineTo(x2, y1);
    this.lineTo(x2, y2);
    this.lineTo(x1, y2);
    this.lineTo(x1, y1);
    
};

MovieClip.prototype.softEdge = function(blur, color) {
    
    this.createEmptyMovieClip("se_cover",1970)
    var b=this.getBounds(this)
    this.se_cover.clear()
    trace(this.cover);
    for (var i = 0; i<=blur; i++) {
        this.se_cover.lineStyle(3,color, 100-(100/blur)*i);
        this.se_cover.roundRect(b.xMin+i, b.yMin+i, b.xMax-i, b.yMax-i, blur-(i*2/3));
    }
    trace(this.se_cover);
    this.se_cover.lineStyle();
    this.se_cover.beginFill(color,100)
    this.se_cover.drawRect2(b.xMin-1, b.yMin-1, b.xMax+1, b.yMax+1)
    this.se_cover.roundRect(b.xMin, b.yMin, b.xMax, b.yMax, blur);
    this.se_cover.endFill()
};
MovieClip.prototype.roundRect = function(x1, y1, x2, y2, r) {
    r = Math.min(Math.abs(r), Math.min(Math.abs(x1-x2), Math.abs(y1-y2))/2);
    var f = 0.707106781186548*r;
    var a = 0.588186525863094*r;
    var b = 0.00579432557070009*r;
    var ux = Math.min(x1, x2);
    var uy = Math.min(y1, y2);
    var lx = Math.max(x1, x2);
    var ly = Math.max(y1, y2);
    this.moveTo(ux+r, uy);
    var cx = lx-r;
    var cy = uy+r;
    this.lineTo(cx, uy);
    this.curveTo(lx-a, uy+b, cx+f, cy-f);
    this.curveTo(lx-b, uy+a, lx, uy+r);
    cy = ly-r;
    this.lineTo(lx, cy);
    this.curveTo(lx-b, ly-a, cx+f, cy+f);
    this.curveTo(lx-a, ly-b, lx-r, ly);
    cx = ux+r;
    this.lineTo(cx, ly);
    this.curveTo(ux+a, ly-b, cx-f, cy+f);
    this.curveTo(ux-b, ly-a, ux, ly-r);
    cy = uy+r;
    this.lineTo(ux, cy);
    this.curveTo(ux+b, uy+a, cx-f, cy-f);
    this.curveTo(ux+a, uy+b, ux+r, uy);
};

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值