快速业务通道

Flash趣味实例:吃鼠标

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-14

请朋友们把鼠标放在下面的Flash动画里面,动动看,有什么情况发生?

  哎哟!小球会跟踪鼠标,并自动转向鼠标的方向,然后……鼠标被吃掉了?!!

  使劲拖动鼠标,鼠标就又从嘴巴里面逃了出来!

  首先让我们看看这个动画的结构图:

  制作思路: 做一个吃鼠标的MC,如下图所示:



  我们让这个MC随着鼠标跑动,当鼠标和这个MC 的距离在一定范围内时,就播放出现上面的吃鼠标MC,同时让真正的鼠标隐藏;如果鼠标与这个MC 的距离不在规定范围内时,真正的鼠标显示,然后让MC停在它的第一帧 。


MC原文件下载学习

  制作步骤:   1、设置播放的速度:(Ctrl+M)设置播放速度为20fps。

  2、新建一个MC:kiss,在第一帧画出左图图样(注意对准场景中心)。在第5帧插入关键帧,画成右图图样。

  


  在第一帧设置shape变形。

  3、新建一个mc:mouse,画一个鼠标图样,或者从鼠标的控制面板中抓取。

  4、新建一个mc:zui。在第一帧中拖入kiss组件,记住对准场景中心,在第5帧插入关键帧,同时移动该mc一段距离,在第10帧插入帧,在第一帧设置motion变形,同时加上一句AS:stop();;新建层:layer2,位于layer1的下方,在第二帧插入关键帧,把mouse组件拖到layer1的第5帧中组件的位置,在第6,7,8,9,10帧上,分别插入关键帧,并分别打散(Ctrl+B),用橡皮擦工具一帧一帧的擦成被咬碎的形状,在第10帧上加上一句AS:stop();整个组件如下图:


  到这里,我们就把最关键的mc做完了。
  5、新建一个MC组件:chi。拖入zui组件,同时给该组件赋予一个实例名(instance name):top,安排如下图:红色圆圈内为zui组件的中心,白色圆圈内为场景的中心。



  6、新建一个MC组件:bo。拖入组件chi,位置安排如下:x:0,y:0;白色圆圈内为场景中心。这样做的目的是让所有的mc都有一个相同的坐标系。同时给场景中的组建赋予一个实例名(instance name):block。



选中场景中组件,加上AS代码: onClipEvent (enterFrame) {
  bx = _xmouse;
  by = _ymouse;  //获得当前的鼠标位置

  //下面代码是控制吃鼠标的MC的嘴巴的角度,让嘴巴的方向始终对这鼠标
  dy = by-_root.bo.block.top._y;
  dx = bx-_root.bo.block.top._x;
  angle = math.atan(dy/dx);
  angle = angle*180/math.PI;
  if (dx<0 and dy>0) {
    angle = angle-180;
  } else {
    if (dx<0 and dy<0) {
      angle = angle+180;
  }
}
_root.bo.block.top._rotation = angle;

//下面代码是控制吃鼠标的MC跟随鼠标运动的速度
speed = bx/10;
speed2 = by/10;
_root.bo.block._x = _root.bo.block._x+speed+2;
_root.bo.block._y = _root.bo.block._y+speed2+2;

//下面代码是鼠标被吃掉的情况,当鼠标和MC的距离在规定的距离内时,鼠标被吃掉
  if (Math.abs(_root.bo.block.top._x-bx)<20 or Math.abs(_root.bo.block.top._y-by)<20) {
    if (eat==true){
      tellTarget ("top") {
        mouse.hide();
  //使鼠标隐藏
        Play();
  //播放(即:跑去吃鼠标)
      }
      eat=false;
//这里这样设置表示鼠标已经被吃掉而且没有从嘴里跑出来,就不能再吃了
    }
  } else {
    tellTarget ("top") {
      mouse.show();
  //使鼠标显现
      gotoAndStop(1);
  //停在第一帧
    }
    eat=true;
  //这里这样设置表示鼠标已经从嘴里跑出来,可以吃了
  }
}
  7、回到Scene 1,把组件bo拖入到场景中,选中组件赋予一个实例名(instance name):bo。所有制作完毕,按Ctrl+Enter进行测试。   附:onClipEvent的用法

onClipEvent (clipEve

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号