快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

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

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

« Full Screen »

点击这里下载源文件

第一帧:

x=0
i=0
//lovex和lovey两个数组分别保存LOVE这个字的主要坐标!
lovex=new Array(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=new Array(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)<=1 and Math.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;//弧度递增
 }
}

返回类别: Flash教程
上一教程: Flash游戏开发系列一:游戏中的敌人(7)
下一教程: Flash制作动态三角函数图课件

您可以阅读与"Flash AS实现的一种不规则曲线运动"相关的教程:
· Flash制作的一种拖动图片效果
· flash实现的简朴虚拟现实:商品展示效果
· Flash制作的一种凸放大镜效果
· Flash中实现物体运动的三种方式
· Flash中运动规律的一些基本概念
    微笑服务 优质保证 索取样品