选中所有电影片断类图符实例,按Ctrl-K对齐,然后分别双击每一个实例(包括那个空的电影片断),从左到右设置实例名分别为trace0至trace11。
现在准备工作就绪了,我们来对那个空的电影片断做些修改,这是实现鼠标跟随的关键。进入它的编辑画面。对第2,3帧分别按F6键,使前三帧都成为关键帧。其中第1帧用于对参数初始化,第2帧用于计算并把字符移动到新的位置上,第3帧用于控制循环第2帧的操作。
双击第1帧,设置Actions语句如下:
Set Variable: "n" = 11
Set Variable: "ac" = 1.2
Set Variable: "de" = 2.55
Set Variable: "space" = 12
Loop While(n >= 0)
Set Variable:"/trace"&n&":x"
= GetProperty ("/trace"&n, _x )
Set Variable:"/trace"&n&":y"
= GetProperty ("/trace"&n, _y )
Set Variable:"/trace"&n&":vx"
= 0
Set Variable:"/trace"&n&":vy"
= 0
Set Variable:"n" = n-1
End Loop
Start Drag("/trace0", lockcenter)
1.前四句变量设置中每个变量的含义我们在上面已经说过了,除了n以外,其余三个都可以修改。
2.接下来的Loop循环中,分别初始化以下几个变量:
将tracen:x(这个变量用于存放第n个字符的x坐标值)设置为tracen的x坐标值。
将tracen:y(这个变量用于存放第n个字符的y坐标值)设置为tracen的y坐标值。
将tracen:vx(这个变量用于存放第n个字符x方向上的速度值)设置为0。
将tracen:vy(这个变量用于存放第n个字符y方向上的速度值)设置为0。
在这里注意两种表示方法,一个是使用连接符号&可以把两个字串或表达式连结起来成为一个新字串或表达式,如上面的变量"/trace"&n&":x",当n
= 1时,这个变量名就是"/trace1:x"。另一种表示方法是给变量名后加:,其后再跟变量,表示一种从属关系,有点象C++中类中变量的表示方法。
经过这个循环,所有字符的初始位置都被记录下来,并把初始速度设为0并存入相应变量中。
3.最后一句的设置,把名为trace0的图符实例锁定在鼠标中央,随着鼠标移动。在下一帧的Actions中我们让trace1跟着trace0移动,trace2跟着trace1移动,依此类推,从而完成鼠标跟随。
现在设置第2帧的Actions语句,如下所示:
Set Variable: "n" = 1
Loop While(n <= 11)
Set Variable: "/trace"&n&":vx"
= (Eval("/trace"&n&":vx")+(Eval("/trace"&(n-1)&":x")
+space-Eval("/trace"&n&":x"))/ac)/de
Set Variable: "/trace"&n&":vy"
= (Eval("/trace"&n&":vy")+(Eval("/trace"&(n-1)&":y")
-Eval("/trace"&n&":y"))/ac)/de
Set Variable: "/trace"&n&":x"
= Eval("/trace"&n&":x") + Eval("/trace"&n&":vx")
Set Variable: "/trace"&n&":y"
= Eval("/trace"&n&":y") + Eval("/trace"&n&":vy")
Set Variable: "n" = n+1
End Loop
Set Variable: "/trace0:x" = GetProperty("/trace0",
_x )
Set Variable: "/trace0:y" = GetProperty("/trace0",
_y )
Set Variable: "n" = 1
Loop While(n <= 11)
Set Property("/trace"&n, X Position) =
Eval("/trace"&n&":x")
Set Property("/trace"&n, Y Position) =
Eval("/trace"&n&":y")
Set Variable: "n" = n+1
End Loop
因为我们在上面已经把算法给大家分析过了,所以相信理解这段Actions不会有什么问题。
首先,第一句设置变量n的初值为1。
接下来的Loop循环的内容就是把上面我们讲过的计算公式变成Actions语句。这里要用到一个函数Eval(),它用来获取表达式的值。对于简单的变量,我们不需要用到它,但对于复杂一些的组合变量,取值就一定要用它了。
循环结束后的三条语句中,前两条用于把名为trace0(也就是那个被锁定在鼠标中央的电影片断)的实例的x和y坐标分别保存下来,这样就可以不断获得新的鼠标位置,以便其它字符跟踪。第三条语句将n的值重置为1。
最下面的几条语句还是一个循环,它把我们计算出来的每个字符的新位置分别赋给该字符所对应电影片断的相应属性,以此来实现字符位置的变化。
第二帧的设置就是这样。第三帧的Actions很简单,只有一句话:Go
to and Play(2),使得第2帧的Actions被反复执行,这样就实现了字符不断调整位置,不断跟踪鼠标的效果。
好了,所有的Actions都设置好了,按Ctrl-Enter测试一下吧。
这里是本节示例的原代码。
|