0

我正在 ActionScript 3 中构建一个简单的白板应用程序。ActionScript 中的大多数白板或绘画应用程序倾向于使用间隔、计时器、mouseMove 事件或 enterFrame 事件来跟踪鼠标位置并在跟踪点之间绘制线条或画笔.

我想要实现的是像 Photoshop 这样的程序可以在使用画笔工具进行绘画时渲染出漂亮的平滑画线。在 Photoshop 中,无论您在画布上移动鼠标的速度有多快,绘制的线条总是以平滑的曲线边缘结束。在我的应用程序中,使用前面提到的任何方法,将画笔渲染到舞台的函数调用之间总是存在延迟。因此,当以圆形方式非常快速地移动鼠标时,使用这些技术中的任何一种都可能导致尖锐的拐角线。

这对我来说并不奇怪,我只是不知道如何才能像 Photoshop 的画笔工具那样实现更平滑的线条。请注意,我的应用程序的画笔主要基于形状,不使用或不能使用绘图 API 来绘制连续线条。换句话说, graphics.curveTo() 不是一个选项。我还将画笔生成的 Sprites 或 Shapes 渲染到 BitmapData 实例。

4

4 回答 4

0

我的解决方案最终是两种技术的结合。我最终做的是在使用/绘制画笔时显示路径的预览。当这种情况发生时,我正在收集间隔之间的所有点。然后,当用户释放鼠标按钮时,我使用所有收集点之间的二次贝塞尔曲线绘制更准确、弯曲的笔触。

于 2010-02-24T17:20:25.440 回答
0

那么,如果您不使用图形 API,您将如何绘制线条呢?(您可能想查看 Graphics API 的 lineBitmapStyle 函数)。

但是,无论使用哪种绘图方法,我都会做的是估计您拥有的两点之间的画笔路径,也许使用之前的点来确定弯曲路径的方式(和多少)。你读过贝塞尔曲线吗?(http://en.wikipedia.org/wiki/B%C3%A9zier_curve

于 2010-02-23T15:56:50.377 回答
-2

我认为获得更好结果的唯一方法是为您的 Flash 电影使用更高的帧速率。这种方式每秒有更多的检查,这应该使线路更流畅。

于 2010-02-23T15:59:52.367 回答
-2

http://www.paultondeur.com/2008/03/09/drawing-a-cubic-bezier-curve-using-actionscript-3/

看看这个:)它有一些样本

于 2010-02-23T16:11:17.597 回答