Flash / AS3 - 如何获取Flash中绘制的路径的点

时间:2011-08-31 12:55:49

标签: flash actionscript-3 animation

是否可以在闪存中绘制路径,并从AS访问点?

例如,如果我有一张地图并且我在不同的道路上添加了隐藏的路径,那么我后来想要从代码中沿着这些预定义的路径设置流量或增长线的动画。

4 个答案:

答案 0 :(得分:0)

你可能认为在世界领先的18岁,可编写脚本的矢量绘图应用程序中期待这一点是合理的,但你会错的。

您可以通过沿着路径补充动画片段来获得所需的效果,比如说使用动画工具(gui)超过100帧,然后控制影片剪辑的内容以及通过AS3播放动画。

否则,您需要在Illustrator中绘制路径或等效路径,通过(例如)SVG导出并导入数据。只要您实际上不需要绘制路径,这将起作用,因为很明显,AS3只能绘制二次贝塞尔曲线,而Illustrator只能绘制/导出立方贝塞尔曲线。

答案 1 :(得分:0)

您可以创建Point个对象的数组,保存路径的所有检查点。在你需要很好地展示你的道路的那一刻。你只需要逐行绘制:从第1点到第2点的线,从第2点到第3点的线......等等。最好在某个单独的Sprite上执行此操作,在地图对象的顶部,这样你就会以后能够轻易地从舞台上删除它。

通过这种方式,您可以为每个路径提供点数组。这里唯一的困难部分将是创建所有这些数组。

答案 2 :(得分:0)

我从未尝试过,但从技术上讲,应该可以使用像as3swf这样的库,这是一个用actionscript编写的SWF解析器。

您必须使用解析器库解析包含路径的SWF,然后从输出中提取所需的坐标。

但这个程序对我来说似乎非常倒退。一种更简单,更可行的方法是在Flash中绘制路径,选择它们并使用:File > Export > Export Selection...导出它们,然后导出为Adobe FXG。这会将您的路径导出为FXG XML文件。

然后,您可以在Flash中解析FXG文件并提取您感兴趣的路径坐标。不应该那么难实现。另请查看Path class docs,因为它包含有关如何存储坐标以及应如何解释坐标的一些信息。

答案 3 :(得分:0)

如果您提前知道路径中的点,则可以将它们存储在数组或矢量中并手动处理绘图。查看Graphics类以获取绘图方法。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html

如果您不想走这条路,您可以应用一些代码向导来为您完成工作。一种可行的方法,如果您知道起点:在具有特定颜色的形状上绘制隐藏路径(例如,0x00ff0000,完全透明的红色)。然后将Shape绘制到BitmapData实例。每个帧,查找与您当前位置相邻的完全透明的红色像素(使用BitmapData的getPixel方法),然后移动到那一点。请注意,此技术不支持交叉点。