在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个。
答案 0 :(得分:4)
注意: Flash Player 11以后包含绘制三次曲线的本机方法cubicCurveTo(),如果您定位FP11,这应该是最快的方法。
就在上周,我写了一个类来绘制任意顺序的Bezier曲线。
代码未经过优化,但在我的测试中运行正常。性能是可接受的动画事件(虽然我不认为滥用它是一个好主意,因为我说它没有优化;当然,将这些用于二次曲线是没有意义的,因为玩家可以这本地做的。)
如果你想使用它或者看一下代码就在这里:
我认为使用示例代码,您将能够毫无困难地弄清楚如何使用它(它非常直接且有点评论);但是如果你遇到问题,请离开!
随意使用它。
答案 1 :(得分:1)
如果在API调用中内置了二次方,那么您必须足够好地理解Bezier以编写自己的三次实现。
赞this。
答案 2 :(得分:0)
该网站列出并解释了近似三次贝塞尔曲线的各种方法:
http://timotheegroleau.com/Flash/articles/cubic_bezier_in_flash.htm
在最底部,他给出了一个标题固定中点方法的方法,该方法使用四条二次曲线作为近似值,并且在所有方法中的准确度和性能方面似乎都是最好的。