记得刚开始学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;//弧度递增
}
}