设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源分享平台

Flash趣味实例:吃鼠标

来源:136z.Com 作者:佚名 时间:2005-03-12 23:12:56
请朋友们把鼠标放在下面的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 (clipEvent) {
  statement(s)
}

只能用在影片片段的动作里,clipEvent的可取值为:

load 该影片片段已载入
unload:该影片片段被卸载
data :用loadVariableNum载入数据后或用loadMovie载入影片的每个影片片段后
enterFrame: 播放至该影片片段所在帧(若停在该帧则反复执行)
mouseMove: 鼠标移动
mouseDown :鼠标键按下
mouseUp: 鼠标键松开
keyDown: 键盘键按下
keyUp :键盘键松开

各事件可用逗号分隔,当有一事件成立时就执行statement(s)。

.fla原文件下载学习

Tags:

  • 好的评价 如果您觉得好,就请您
      0%(0)
  • 差的评价 如果您觉得差,就请您
      0%(0)
  • 相关文章
    广告赞助

    文章随便看看 设计素材 建站学院 网页模板 视频教程

    网友评论

    共有 0 位网友发表了评论,得分 0 分,平均 0 分    查看完整评论

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 1分

    内 容:

             通知管理员 验证码: