深深的记得,对着一堆打散的字体点墨水瓶的痛苦.....所以....
在改版之前的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
}
在改版之前的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
}