4

在 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 个。

4

3 回答 3

4

注意: Flash Player 11 及更高版本包括一个绘制三次曲线的本机方法,cubicCurveTo(),如果您的目标是 FP11,这应该是最快的方法。

就在上周,我写了一个类来绘制任意阶的贝塞尔曲线。

该代码未优化,但在我的测试中运行良好。性能是制作动画的可接受事件(尽管我不认为滥用它是一个好主意,因为正如我所说它没有优化;当然,将这些用于二次曲线是没有意义的,因为玩家可以以本地方式执行此操作)。

代码在这里,如果您想使用它或看一下:

贝塞尔曲线类

示例代码

我认为通过示例代码,您将能够毫无困难地弄清楚如何使用它(它非常简单并且有些注释);但是,如果您遇到问题,请离开!

您可以随意使用它。

于 2010-07-14T23:56:29.547 回答
1

如果该 API 调用中内置了二次方,则您必须充分了解贝塞尔曲线才能编写自己的三次方实现。

这样

于 2010-07-14T23:25:16.533 回答
0

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

在最底部,他给出了一个标题为Fixed MidPoint 方法的方法,该方法使用四个二次曲线作为近似值,并且似乎是所有方法中精度和性能最好的。

于 2011-01-10T13:40:03.853 回答