我是否正确地认为从Flash GUI中您只能绘制Cubic Bezier曲线,而从Actionscript中您只能绘制二次贝塞尔曲线?真的?
这看起来很好..我确定它不能......如果我不得不写一个Quadratic Bezier绘图应用来计算一些点坐标,那就太疯狂了。
答案 0 :(得分:4)
如果您正在使用绘图API,那么您只能使用curveTo()函数绘制二次贝塞尔曲线。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html#curveTo()
对于正确的贝塞尔曲线,它并不难,但你必须自己做。我找到的一些源代码快速链接: http://www.paultondeur.com/2008/03/09/drawing-a-cubic-bezier-curve-using-actionscript-3/
http://www.farmcode.org/post/2009/07/06/Fast-2D-Bezier-Library-for-ActionScript-3.aspx
答案 1 :(得分:3)
实际上,昨天发布的Flash Player 11中,Drawing API支持Cubic Bezier曲线:
(此主要版本的其他改进和补充......)
http://www.adobe.com/devnet/flashplayer/articles/whats-new-flash-player11.html
答案 2 :(得分:1)
使用fl.motion.BezierSegment类在ActionScript中绘制Cubic Bezier曲线是一个很棒的帖子:
http://www.eleqtriq.com/2010/04/cubic-bezier-in-flash/
非常棒 - 我创建了一个包含多个细分的完整曲线,其中包含此页面上大多数其他链接所需的一小部分代码和类:
var resolution :uint = 50;
var step :Number = 1/resolution;
function drawCurve(p0:Point, c0:Point, c1:Point, p1:Point)
{
var bezier :BezierSegment = new BezierSegment(p0, c0, c1, p1);
var t :Number = 0;
while (t <= 1)
{
var pt:Point = bezier.getValue(t);
with (graphics)
{
lineStyle(0.1, 0x00FFFF);
t == 0
? moveTo(pt.x, pt.y)
: lineTo(pt.x, pt.y);
}
t+=step;
}
pt = bezier.getValue(1);
graphics.lineTo(pt.x, pt.y);
}
这是一个非常好的帖子!