用Flash MX制作舞动的龙
在这个实例中你可以看到一条七彩龙在你的指挥下栩栩如生地舞动。其实动画的实现原理很简单:通过设置不同的Movie Clip,而每一个Movie Clip的Action都设置为跟随前一个Movie Clip做运动的指令。也就是:A跟随鼠标,B跟随A,C跟随B,D跟随C...以此类推。下面我们使用FLASH mx来制作本实例,大家可以通过本实例来熟悉和掌握MX的界面以及一些与flash5的不同之处。文章末尾提供.fla文件下载学习。 步骤 1
首先打开MX新建一个影片,选择modifyàdocument…命令设置影片的一些属性,先将影片播放速率调整为 50,影片背景被黑色,大小任意,如图1所示:
图 1
然后分别建立7 个Movie Clip组件,依次命名为"spinner"、"spinner2"、"spinner3"、"spinner4"、"spinner5"、"spinner6"、"spinner7",每一个组件内分别画一个正圆,填充上不同的颜色,在正圆上一次写上"e"、"江"、"春"、"水"、"向"、"东"、"流"七个字,我们要把spinner组件作为龙头,所以用矩形工具给圆上画上龙的两个角,如图2所示:
图 2
七个做为龙的身体的movieclip做好后,回到主场景中,分别给七个movieclip建立不同的图层,分别命名为"e"、"江"、"春"、"水"、"向"、"东"、"流",如图3所示:
图 3
然后分别将七个movieclip放到相应的图层中去,并且按顺序排列好,如图4所示:
图 4
步骤 2
对主场景上的 7 个Movie Clip分别执行windowsàproperties命令,调出properties面板,分别设置它们的Instance Name 为"spin1"、"spin2"、"spin3"、"spin4"、"spin5"、"spin6"、"spin7" 如图5所示:
图 5
步骤 3
新建一个Movie Clip组件,命名为"drg1",在"drg1"的编辑区中不要放置任何对象,让它是一个空白内容的Movie Clip即可。
回到主场景中,插入一个新的图层,命名为"Drag1",将"drg1"组件放置在场景中,执行 windows/properties命令调出properties属性面板, 设置其Instance Name为"drg1",如图6所示:
图 6
选择图层"drag1"的第一帧,然后调出actions面板,设置此帧的action 如图7所示:
图 7
也就是要对drg1对象进行拖动。
步骤 4
再建立一个Movie Clip组件,命名为"action",在"action"的编辑区内一样不要放置任何对象,让它是一个空白内容的Movie Clip即可,这个movieclip主要用来设置进行控制的action。
在组件"action"的第一帧上设置如下的action:
Set Variable: "thisX" = GetProperty ( "/drg1", _x )
//取得组件drg1的x坐标
Set Variable: "thisY" = GetProperty ( "/drg1", _y )
//取得组件drg1的y坐标
Set Variable: "spX" = GetProperty ( "/spin1", _x )
//取得龙头的x坐标
Set Variable: "spY" = GetProperty ( "/spin1", _y )
//取得龙头的y坐标
Set Variable: "difX" = thisX - spX
//求得drg1与龙头的x坐标差
Set Variable: "difY" = thisY - spY
//求得drg1与龙头的y坐标差,因为我们拖动的是drg1,所以其实求的是鼠标与龙头的坐标差
Set Variable: "stepX" = 1
//设置x方向的增量为1
Set Variable: "stepY" = 1
//设置y方向的增量为1
Set Variable: "xStp" = difX / 10
//求得鼠标与龙头的x坐标差的十分之一
Set Variable: "yStp" = difY / 10
//求得鼠标与龙头的y坐标差的十分之一
Set Property ("/spin1", X Position) = spX + xStp
//设置龙头的新位置的x坐标为:原来的x坐标与差值的十分之一 的和
Set Property ("/spin1", Y Position) = spY + yStp
//设置龙头的新位置的y坐标为:原来的x坐标与差值的十分之一 的和
这里为什么要和差值坐标的十分之一相加呢,因为如果直接和差值相加,那么龙头就会紧紧跟着鼠标移动,而与十分之一加,龙头不会立刻跟上鼠标,从而会产生一种缓冲的效果,那样就显得自然多了。其实大家在做的时候不一定非要设置成十分之一,其他的分值也可以,不过如果设置的越小的话,缓冲效果会越明显的。
在第二帧上做以下的action的设置:
Set Variable: "thisX" = GetProperty ( "/drg1", _x )
Set Variable: "thisY" = GetProperty ( "/drg1", _y )
Set Variable: "spX" = GetProperty ( "/spin1", _x )
Set Variable: "spY" = GetProperty ( "/spin1", _y )
Set Variable: "difX" = thisX - spX
Set Variable: "difY" = thisY - spY
Set Variable: "stepX" = 1
Set Variable: "stepY" = 1
Set Variable: "xStp" = difX / 10
Set Variable: "yStp" = difY / 10
Set Property ("/spin1", X Position) = spX + xStp
Set Property ("/spin1", Y Position) = spY + yStp
上面的as其实和第一帧的一模一样,为什么要设置两帧呢?因为如果只设置成一帧,动画就不能即使的得到最新的坐标,也就不可能产生连贯的移动,设置为两帧后,执行完第一帧就立刻执行第二帧,第二帧的执行以第一帧的结果为依据,这样往复执行,就产生了连续的移动效果。
步骤 5
再建立一个Movie Clip组件,命名为"action2",在"action2"的编辑区内一样不要放置任何对象,让它是一个空白内容的Movie Clip即可,这个movieclip主要用来设置进行控制的action。
在组件"action"的第一帧上设置如下的action:
Set Variable: "thisX" = GetProperty ( "/spin1", _x )
Set Variable: "thisY" = GetProperty ( "/spin1", _y )
Set Variable: "spX" = GetProperty ( "/spin2", _x )
Set Variable: "spY" = GetProperty ( "/spin2", _y )
Set Variable: "difX" = thisX - spX
Set Variable: "difY" = thisY - spY
Set Variable: "stepX" = 1
Set Variable: "stepY" = 1
Set Variable: "xStp" = difX / 10
Set Variable: "yStp" = difY / 10
Set Property ("/spin2", X Position) = spX + xStp
Set Property ("/spin2", Y Position) = spY + yStp
在第二帧上做以下的action的设置:
Set Variable: "thisX" = GetProperty ( "/spin1", _x )
上一个:用Flash MX制作飞舞的蝴蝶
下一个:Flash制作闪电特效
- 更多Flash疑问解答:
- 今天教大家学会用U5制作成翻页相册
- Flash MX 2004 ActionScript图文教程(九)
- Flash MX 2004 ActionScript图文教程(八)
- Flash MX 2004 ActionScript图文教程(七)
- Flash MX 视频导入功能详解
- Flash5 画任意直线教程
- FLASH -- 关于变量的问题FLASH -- 关于变量的问题
- Flash本地加密
- flash场景之间相互跳转的实现方法
- Flash那样动感十足制作PPT按钮跟我来
- Flash Mx使用技巧十二则
- 使用Flash mx制作旋转的时钟效果
- PowerPoint中插入Flas易做图的方法
- 用FlashMX制作拖动悬浮窗口
- 在Flash中巧妙替换字体