手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网页制作>Flash>列表

FlashAS实现的一种不规则曲线运动

来源:互联网 作者:west263.com 时间:2008-04-02
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  记得刚开始学AS的时候!就请教过很多人这方面的AS!但效果总是不理想!这几天没事看了看数学资料找到了意外的收获呀!和大家一起分享!看来数学还是很重要的!只怪当然对这科不感冒,没用心学呀!呵呵呵。

  演示效果:(鼠标单击动画之后不放开试试会看到什么?)

  

  


  第一帧:

  
x=0

  i=0

  //lovex和lovey两个数组分别保存LOVE这个字的主要坐标!

  lovex=newArray(175,175,175,175,175,195,215,235,255,255,255,275,295,315,315,315,295,275,325,325,325,340,355,37

  0,385,385,385,405,425,445,465,405,405,425,445,465,405,405,425,445,465)

  lovey=newArray(168,188,208,228,248,248,248,248,188,208,228,248,248,228,208,188,168,168,168,188,208,228,248,22

  8,208,188,168,168,168,168,168,188,208,208,208,208,228,248,248,248,248)

  its0.itlovex=lovex[0]//在虫0下定一个变量保存按下鼠标后虫0的X坐标

  its0.itlovey=lovey[0]//在虫0下定一个变量保存按下鼠标后虫0的y坐标


  第二帧

  
x


  第三帧

  
if(x<41){

  its0.duplicateMovieClip("its" x,x)//复制40个小虫个

  this["its" x].itlovex=lovex[x]//在虫x下定一个变量保存按下鼠标后虫x的X坐标

  this["its" x].itlovey=lovey[x]//在虫x下定一个变量保存按下鼠标后虫x的y坐标

  gotoAndPlay(2)

  }else{

  stop()

  }


  虫子its0这个MC上代码:

  
onClipEvent(load){//加载时设定初始值

  ang=Math.random();//随机产生虫子的初始弧度值

  incr=Math.random()/100;//随机产生虫子的弧度值增量

  aimx=random(600)-300;//随机产生两个虫子的椭圆运动长短半径,范围根据您FLASH的尺寸来设,我的是600*400中央点是(3

  00,200)

  x=random(600)-300;

  aimy=random(400)-200

  y=random(400)-200;

  xy=random(200)-100;//随机产生虫子中央偏位值

  _xscale=_yscale=_yscale*(Math.random() .1);//随机产生虫子大小比例

  由于考虑到按鼠标后字体的美观,暂时没有用

  }

  onClipEvent(mouseDown){_root.i=1}

  onClipEvent(mouseUp){_root.i=2}

  onClipEvent(enterFrame){

  if(_root.i==1){//当i==1时即按下鼠标时虫子移动到LOVE指定的点

  _x=_x (itlovex-_x)/10;

  _y=_y (itlovey-_y)/10;

  }

  if(_root.i==2){//当i==2时即按下鼠标时虫子移回按下鼠标前的位置

  ix=Math.cos(ang)*x 300 xy//计算按下鼠标前虫子的位置

  iy=Math.sin(ang)*y 200 xy

  _x=_x (ix-_x)/5;//移动虫子到按下鼠标前的位置

  _y=_y (iy-_y)/5;

  if(Math.abs(ix-_x)<=1andMath.abs(iy-_y)<=1){_root.i=0;}//当虫子接近(ix,iy)即回到按下鼠标前的位置时,设i=0

  }

  if(_root.i==0){//当i==0时即没有鼠标动作时

  x=x (aimx-x)/150;//根据两个随机长短半径差值计算出虫子的长短半径

  y=y (aimy-y)/150;

  _x=Math.cos(ang)*x 300 xy;//计算虫子的椭圆运动的轨迹

  _y=Math.sin(ang)*y 200 xy;

  ang=ang incr;//弧度递增

  }

  }


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!