当前位置:软件学习 > Flash >>

用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其实和第一帧的一模一样,为什么要设置两帧呢?因为如果只设置成一帧,动画就不能即使的得到最新的坐标,也就不可能产生连贯的移动,设置为两帧后,执行完第一帧就立刻执行第二帧,第二帧的执行以第一帧的结果为依据,这样往复执行,就产生了连续的移动效果。


作者:flashsj出处:天极设计在线责任编辑: [ 2002-03-25 16:39 ]
我们使用FLASH mx来制作本实例,大家可以熟悉和掌握一下FLASH MX的界面以及它与flash 5的一些不同之处

  下面的步骤5到步骤10的as和步骤4的一模一样,只是控制的对象不同。

  步骤 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 )
 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,