I ended up implementing this really helpful example written by Lee Burrows here. Here is all I need in a single call:
static public function getPoint(t:Number, points:Array):Point
{
var x:Number = 0;
var y:Number = 0;
var n:uint = points.length-1;
var factn:Number = factoral(n);
for (var i:uint=0;i<=n;i++)
{
//calc binominal coefficent
var b:Number = factn/(factoral(i)*factoral(n-i));
//calc powers
var k:Number = Math.pow(1-t, n-i)*Math.pow(t, i);
//add weighted points to totals
x += b*k*points[i].x;
y += b*k*points[i].y;
}
return new Point(x, y);
}
static private function factoral(value:uint):Number
{
if (value==0) return 1;
var total:Number = value;
while (--value>1)
total *= value;
return total;
}
A sample code using this class is also available at the link above.
The only drawback of this solution is that I have to handle manually the curve smoothness by defining the amount of lines the curve will be made of (by changing "t" incrementation). But I could as well define this incrementation dynamically depending of the amount of control points, or the distance between them.
Anyway this is more than enough for the problem I had, hope this helps someone else.