在Actionscript中绘制三次贝塞尔曲线?

时间:2010-07-14 23:08:40

标签: flash actionscript-3 graphics bezier

在AS3中以编程方式绘制三次贝塞尔曲线的最佳方法是什么? Graphics类似乎只支持二次曲线。 :(我希望能够做到这样的事情:

var startPoint:Point = new Point(0, 0);
var endPoint:Point = new Point(5, 5);
var control1:Point = new Point(5, 0);
var control2:Point = new Point(0, 5);

var myBezier:Sprite = getBezier(startPoint, control1, control2, endPoint);

对于一个表演目标,我计划一次在舞台上演出约50个。

3 个答案:

答案 0 :(得分:4)

  

注意: Flash Player 11以后包含绘制三次曲线的本机方法cubicCurveTo(),如果您定位FP11,这应该是最快的方法。

就在上周,我写了一个类来绘制任意顺序的Bezier曲线。

代码未经过优化,但在我的测试中运行正常。性能是可接受的动画事件(虽然我不认为滥用它是一个好主意,因为我说它没有优化;当然,将这些用于二次曲线是没有意义的,因为玩家可以这本地做的。)

如果你想使用它或者看一下代码就在这里:

The BezierCurve class

Sample code

我认为使用示例代码,您将能够毫无困难地弄清楚如何使用它(它非常直接且有点评论);但是如果你遇到问题,请离开!

随意使用它。

答案 1 :(得分:1)

如果在API调用中内置了二次方,那么您必须足够好地理解Bezier以编写自己的三次实现。

this

答案 2 :(得分:0)

该网站列出并解释了近似三次贝塞尔曲线的各种方法:
http://timotheegroleau.com/Flash/articles/cubic_bezier_in_flash.htm

在最底部,他给出了一个标题固定中点方法的方法,该方法使用四条二次曲线作为近似值,并且在所有方法中的准确度和性能方面似乎都是最好的。