具有波形效果的Flash鼠标跟踪
下面,将介绍一种带有缓冲效果的鼠标跟随,它在运动时就像一串机械波,波上的每一个部件都严格遵循物理规律(都像是波上的质点),给人很强的美感,会让你不停地挥动手中的鼠标,甚至忘掉要点击的按扭。
首先,确定跟踪部件,比如“abcdefg”这一串字母,一会儿就将在你鼠标的指挥下翩翩起舞了。每一个字母要定为一个MC(movie clip),然后把他们一个个地拖到Scene(场景)中,排成一排(不用很整齐,因为拖动开始后会重新排列),给每个MC写上“instance name”,比如trail1、rail2、trial3、trial4到trial7(一共七个字母),注意命名时最后一个字要按数字顺序,以便下面循环赋值。还有,如果你不想让你的鼠标挡住第一个字母“a”的话,最好再加一个空的MC取名为“trail0”放在trail1的前面。
下面我们开始制作产生跟踪效果的MC,就叫“action”吧。如^15040201a^1,在第一层(其实只用一层)点出三个关键帧(keyframe),第一个关键帧中的properties→action里(如^15040201b^2)写入如下Script。
Set Variable: ″i″ = 7
注:“i”是跟踪部件“instance name”的末尾数字最大值。本例中是trail7最大。
Set Variable: ″a″ = 5
注:如果把字母组成的字串看作是一个绳子的话,“a”就是绳子的弹性系数。
Set Variable: ″b″ = 1.66
注:“b”是跟随的速度,越小越快。如果你不想让你的字母串像一只蚯蚓一样在屏幕上爬,还是把它设在3以下。
Set Variable: ″k″ = 12
注:“k”是静止时每个字母的间距。
Loop While (i>=0)
注:开始循环,到i=0。
Set Variable: ″/trail″&i&″:x_value″ = GetProperty (″/trail″&i,_x)
注:当i =7时,此行对trail7:xvalue赋予trail7目前的x坐标。
Set Variable: ″/trail″&i&″:y_value″ = GetProperty (″/trail″&i,_y)
注:同上赋予y坐标。
Set Variable: ″/trail″&i&″:vx″ = 0
注:i=7使trail7:vx等于0,vx就是此部件与前面部件的x坐标差。
Set Variable: ″/trail″&i&″:vy″ = 0
注:同上,赋予vy等于0。
Set Variable: ″i″ = i-1
注: i自减1
End Loop
注:循环直到i=0跳出。
Start Drag (″/trail0″, lockcenter)
注:开始鼠标拖拉trail0,并置于鼠标中央。
下面在第二个关键帧的properties→actions写入
Set Variable: ″i″ = 1
注:给i赋值1。
Loop While (i<=8)
注:从i=1开始循环到i=8。
Set Variable:″/trail″&i&″:vx″=(eval(″/trail″&i&″:vx″)+(eval(″/trail″&(i-1)&″:x_value″)+k-eval(″/trail″&i&″:x_value″))*1/a)/b
注:把本循环i的跟随部件和此部件前面部件的x坐标差赋予traili:vx。注意,由于前面还加了一个eval(″/trail″&i&″:vx″),所以才使得跟踪有弹性,中间加的k也就是前面规定的字母之间的距离。
Set Variable: ″/trail″&i&″:vy″ = (eval(″/trail″&i&″:vy″)+(eval(″/trail″&(i-1)&″:y_value″)-eval(″/trail″&i&″:y_value″))*1/a)/b
注:同上,对y坐标。由于字母是同一行所以y坐标相同,不用加k。
Set Variable: ″/trail″&i&″:x_value″ = eval(″/trail″&i&″:x_value″)+eval(″/trail″&i&″:vx″)
注:确定traili的x坐标位置,由目前位置加上前面已赋值的x坐标差。
Set Variable: ″/trail″&i&″:y_value″ = eval(″/trail″&i&″:y_value″)+eval(″/trail″&i&″:vy″)
注:同上,对于y坐标。
Set Variable: ″i″ = i+1
注:进行i自加1。
End Loop
注:循环结束后每个traili都有了新的位置。
Set Variable: ″/trail0:x_value″ = GetProperty (″/trail0″, _x )
注:获得目前trail0(字串的龙头)的x坐标。
Set Variable: ″/trail0:y_value″ = GetProperty (″/trail0″, _y )
注:获得目前trail0的y坐标。
Set Variable: ″i″ = 7
Loop While (i>=1)
Set Property (″/trail″&i, X Position) = eval(″/trail″&i&″:x_value″)
Set Property (″/trail″&i, Y Position) = eval(″/trail″&i&″:y_value″)
Set Variable: ″i″ = i-1
End Loop
注:本循环把traili放到屏幕的新位置。
最后在第三帧的properties→actions里写入
Go to and Play (2)
注:不断回到第二帧,不断获得新的位置,产生跟随效果。
好啦,终于写完烦人的Script啦。将作好的actionMC放到场景里就可以了。预览效果如^15040201c^3。