自动描边

本文分享了一种用于Flash中形状轮廓描边的优化算法。该算法通过改进原始实现,提升了处理复杂形状的速度与效率。文章详细介绍了算法的工作原理及其实现细节。
深深的记得,对着一堆打散的字体点墨水瓶的痛苦.....所以....
在改版之前的flashextensibility.com找到一个挺牛的算法,但作者没优化代码.造成有时候会执行非常慢,我优化了一下,现在用起来很方便啦....改版以后这个帖子也没了,也不知道绝版了没有,在这里共享一下,顺便备份^^_

autoStroke( fl.getDocumentDOM().selection[0] );

function autoStroke( shape )
{
    if( null == shape || 'shape' != shape.elementType )
        return;

    var path = fl.drawingLayer.newPath();
    var e,p0,p1,p2;
    var ed = shape.edges; // << this is the key of optimization
    var i = ed.length;
    while(--i > -1)
    // for (var i=0, len=shape.edges.length; i < len; ++i)
    {
        path.newContour(); //lift the pen to avoid lines across the shape
        //for all edges
        e = ed[i];
        //get controll points
        p0 = e.getControl(0);
        p1 = e.getControl(1);
        p2 = e.getControl(2);

        if (e.isLine)
        {
            //straight line
            path.addPoint(p0.x,p0.y);
            path.addPoint(p2.x,p2.y);
        }
        else
        {
            //curve with one midle point
            path.addCurve(p0.x, p0.y, p1.x, p1.y, p2.x, p2.y);
        }
     
    }

    path.makeShape(true); //draw the contour without fill
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值