我已将Adobe Illustrator文档中的大量路径导入到Flash文件中。路径在场景中作为绘图对象存在。使用纯动作脚本,如何在不使用预定义动作参考线的情况下在每条线后移动符号。
编辑:我附上了Flash文件,里面装满了绘图对象。
http://rapidshare.com/files/406497264/pather.fla.html
问题是:这些绘图对象是否可以通过AS3访问,或者我应该将它们转换为符号/任何必要的格式。请举几个例子。
谢谢!
答案 0 :(得分:9)
答案 1 :(得分:2)
正如我所看到的,这分为两个主要步骤:
<小时/> 移动符号屏幕
要控制动画,您将使用ENTER_FRAME事件在屏幕上移动符号。如:
stage.addEventListener(Event.ENTER_FRAME, doMotion);
...
public function doMotion(event:Event):void {
//animate along the path
targetSymbol.x = someNewValue;
targetSymbol.y = someNewValue;
}
另一种方法(我经常使用的方法)是使用Timer来触发动画调用,在本例中是“doMotion”功能。如:
var FPS:Integer = 30; //frames per second (approx)
var animationTimer:Timer = new Timer(1/FPS * 1000); //converted from SEC to MS
animationTimer.addEventListener(TimerEvent.TIMER, doMotion);
animationTimer.start();
<小时/> 确定动作路径
棘手的部分是确定运动路径。从您的描述中无法了解最佳方法。但是,为了对它进行刺戳,似乎所有路径都是直线。
- 一种方法 - 如果是这样,那么您可以使用 x , y 计算符号的位置, width , height 和 rotation 这些行的值。请注意,旋转以弧度表示。因此,在动画开始时,您可以使用基本三角函数(arcsin,arccos,arctan)来查找直线的起点和终点。
一旦知道了端点,就可以在x / y开始时启动targetSymbol,并以任何方式将其移动到结束的x / y。最简单的方法是将 x 中的总变化除以您想要完成动画的帧数并重复 y 。然后在每次迭代中将这些微小数字添加到 x 和 y 值。您还可以通过调整动作的“速度”来添加“缓动”等效果,使其“轻轻地”开始和停止。
由于这些行被导入到flash中,您可以为它们提供实例名称以使编码更容易。或者,如果有太多,您可以迭代存储某些类型集合中所有行的所有显示对象。
- 另一种方法 -
您也可以将单个动画创建为动画片段,然后在需要动画的任何其他位置复制该动画片段。因此,您可以“手动”绘制/补间令人印象深刻的动画,然后以编程方式将动画的转换后的实例放置在适当的位置。这些职位将由现有职位决定。
我希望所有这些都有所帮助,
- gMale
答案 2 :(得分:1)
问题是:这些绘图对象是否可以通过AS3访问,或者我应该将它们转换为符号/任何必要的格式。请举几个例子。
我不知道有任何方法可以直接在AS3中访问这些符号。据我所知,他们是他们的父MovieClip的图形属性的元素。例如,您可以编写如下代码:
var drawOnMe:Sprite = new Sprite();
drawOnMe.graphics.beginFill(0xCC0000);
drawOnMe.graphics.drawRect(0,0,100,100);
drawOnMe.graphics.endFill();
但是,一旦在drawOnMe.graphics对象上绘制了此形状,就无法再访问它,因为它没有标识符。您导入的艺术品基本上属于同一条船。
由于您无法访问艺术作品,因此无法从导入的轮廓中获取点并在路径上为符号设置动画。简而言之,我并不认为这可以做到。
有关Graphics属性的更多信息: