есть такое "шаманское" решение, но где-то и его достаточно

Код AS3:
var test:Shape = new Shape();
addChild(test);
var points:Array=[new Point(20,20),new Point(50,30),new Point(120,10),new Point(50,150)];
test.graphics.lineStyle(1, 0xFF0000);
draw(test.graphics, points);
function draw(gr:Graphics, points:Array):void {
var k:Number=0.382;//вовсе не обязательно, подбирается на глаз
var i:int;
var p:Point = Point.interpolate(new Point((3 * points[1].x - points[2].x)/2,(3*points[1].y-points[2].y)/2), new Point((points[0].x + points[1].x)/2,(points[0].y+points[1].y)/2), k);
var cntrArr:Array=[p];
for (i = 1; i < points.length - 1; i++) {
var dist:Number=k*Point.distance(points[i],points[i+1]);
var dir:Number=Math.atan2(points[i].y-cntrArr[i-1].y,points[i].x-cntrArr[i-1].x);
cntrArr.push(new Point(points[i].x + dist * Math.cos(dir), points[i].y + dist * Math.sin(dir)));
}
gr.moveTo(points[0].x,points[0].y);
for (i = 0; i < cntrArr.length; i++) {
gr.curveTo(cntrArr[i].x, cntrArr[i].y, points[i + 1].x, points[i + 1].y);
}
}
ps аналогичное решение для кривой 3го порядка
здесь есть