论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

构建随机运动的效果

文章类别:Flash | 发表日期:2008-9-21 19:20:28

  ==================================
※ 请勿作商业用途 ,如转载,请与作者本人联系。
※ 有任何问题请EMAIL至: tuliping@tom.com
==================================

效果演示:


http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=480 height=360>http://www.flash8.net/bbs/UploadFile/20035314203016643.swf
随机运动的效果在一些特效里已经司空见惯,大家对random()函数也不生疏,但要得到一个好的效果,你得专心去思量。那么,上面的演示效果如何设置代码呢。 效果简析:

mc在一定的范围内运动,运动的方向是随机的,运动的速率有快有慢,距离有长有短,运动一段随机的距离后停止一定的时间。至于两个按钮的作用很简单,Add Clip按钮用于复制mc,Delete Clip按钮用于删除复制出来的mc。

代码的构建与简析:


//求平面坐标系中两点间的距离
function getdistance(x1, y1, x2, y2) {
var a, b;
a=x2-x1;
b=y2-y1;
return (Math.sqrt(a*a+b*b));
}

//运动距离、范围、速率的设置

MovieClip.prototype.chance = function() {
width = 400;
height = 250;
//mc运动范围的设置
var c, d;
this.x = this._x;
this.y = this._y;
//速率、目标位置的随机设置
this.speed = Math.random()*4+2;
this.targx = Math.random()*width;
this.targy = Math.random()*height;
c = _root.getdistance(this.x, this.y, this.targx, this.targy);
d = this.speed/c;
//mc运动时x、y坐标的增量
this.diffx = (this.targx-this.x)*d;
this.diffy = (this.targy-this.y)*d;
};

//mc运动及停止时间的设置

MovieClip.prototype.move = function() {
//运动的判定
if (_root.getdistance(this.x, this.y, this.targx, this.targy)>this.speed) {
this.x += this.diffx;
this.y += this.diffy;
} else {
this.x = this.targx;
this.y = this.targy;
//停止时间的判定
if (!this.t) {
this.t = getTimer();
}
if (getTimer()-this.t>1000) {
this.chance();
//停止时间大于1秒,调用chance()进行下一次的随机运动
this.t = 0;
}
}
this._x = this.x;
this._y = this.y;
};

button code:
Add Clip button code:


//button instance name :Add
Add.onRelease=function(){
n++;
_root.mc.duplicateMovieClip("mc" add n ,n);
trace(n);
}

Delete Clip button code:
//button instance name :Delete
Delete.onRelease=function(){
if (n>0) {
_root["mc"add n].gotoAndPlay(2);
n -= 1;
trace(n);
}
}

以上代码都在主场景第一桢。

继续.....,做一MC,第一桢:stop();最后一桢:removeMovieClip(this); stop();具体可以参看原文件。
从库中把这MC拖到主场景,instance name:mc 为其加代码:


onClipEvent(enterFrame){
move();
}

制作结束,Ctrl+enter 就可以观看效果。

++++++细心的朋友可能会发现,MC的碰撞并没有检测,当互相碰撞时MC就停止运动,这样效果会更好一些,这个效果的添加留给你自己去完成了++++++++

download fla:
点击浏览该文件

上一篇:{应用}特別的爆破效果 人气:2092
下一篇:{应用}鼠标跟随详例 人气:2272
视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058