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

位图飘动

来源136z.Com 作者:佚名 时间:2005-6-16 23:43:59 该文得分0

这个效果呢,其实也简单,我大致说一下原理。
先自动生成一矩形元件。
_root.createEmptyMovieClip("rec",lv++);


with(_root.rec){
beginFill(0x000000,100);
moveTo(0,0);
lineTo(0,100);
lineTo(100,100);
lineTo(100,0);
lineTo(0,0);
endFill();
_visible=false;
_y=0;
_height=800;
}//上面生的那个矩形,再复制若干份,num是份数,会有具体设定。
for(i=0;iduplicateMovieClip("rec","rec"+i,lv++);
//让这些矩形按规律排开,恰好盖住图片
show.road["rec"+i]._x=img._x+img._width/num*i;
show.road["rec"+i]._width=img._width/num;
}//把要实现效果的图片,再复制若干份,num是份数
for(i=0;iduplicateMovieClip(img,"img"+i,lv++);
}//把每一个矩形,设成相应的图片的遮罩。
for(i=0;ishow.road["img"+i].setMask(_root["rec"+i]);
}这时候,就成了,一个矩形遮罩一个图片,每个图片都成了窄窄的一条,一字排开,你一点也看出有缝隙,还是一张吗,呵呵。
然后,我们让这里图片,有规律的运动,就行了。
show.road.onEnterFrame=function(){
for(i=0;iwith(show.road["img"+i]){
//这里用到了三角函数sin()。
_alpha=_xscale=_yscale=(100-A)+A*Math.sin(show.wn+i*2*Math.PI/num);
}
}
show.wn+=speed;
};我不知道大家是否看得懂。反正我写的也有些乱。

不如这样,反正咱们是要得到结果的。我只接把这个类的内容全贴上,里面写有注释的。高手看得懂的,帮忙改进,看不懂的菜鸟,抓紧时间

学习。
以下是类的内容:
classshow{
//wn是波动速度
staticvarwn:Number=0;
//表示深度的变量
varlv:Number=1;
//原始图像的实例名
staticvarimg:MovieClip;
staticvarroad:MovieClip;
functionshow(mc,path){
road=path==null?_root:path;
img=mc;
//把原始图像设为不可见
img._visible=false;
}
functionwave(num:Number,speed:Number,A:Number){
num=num==null?50:num;
speed=speed==null?50:speed;
A=A==null?3:A;
vari:Number;
//凭空生成了一个矩形元件,以用于遮罩
show.road.createEmptyMovieClip("rec",lv++);
with(show.road.rec){
beginFill(0x000000,100);
moveTo(0,0);
lineTo(0,100);
lineTo(100,100);
lineTo(100,0);
lineTo(0,0);
endFill();
_visible=false;
_y=0;
_height=800;
}
//上面生的那个矩形,再复制若干份,num是份数
for(i=0;iduplicateMovieClip("rec","rec"+i,lv++);
show.road["rec"+i]._x=img._x+img._width/num*i;
show.road["rec"+i]._width=img._width/num;
}
//把要实现效果的图片,再复制若干份,num是份数
for(i=0;iduplicateMovieClip(img,"img"+i,lv++);
}
//把每一个矩形,设成相应的图片的遮罩。
for(i=0;ishow.road["img"+i].setMask(_root["rec"+i]);
}
//
//下面的,是让位图元件,逐有规律的波动,
show.road.onEnterFrame=function(){
for(i=0;iwith(show.road["img"+i]){
_alpha=_xscale=_yscale=(100-A)+A*Math.sin(show.wn+i*2*Math.PI/num);
}
}
show.wn+=speed;
};
}
}把下面复制下来,保存成show.as。
然后,建一个Flash文件。它要和show.as在同一目录。
导入一个图片,把这个图片转成一个影片剪辑,并起外实例名,就起个“img”吧。
打开这个MC,把位图设为上下居中,但是左侧和中心对齐,这样效果较好。
然后,回到主场景,在第一帧写入如下:
varmm=newshow(_root.img);
mm.wave();测试影片,这样效果就出来了。


wave()还有一些参数,我大致说一下吧
Flash中,我有注释的。如下
show类
构造方法:
var name=new show(mc, [path])
参数:
mc:要操作的元件实例名。不可缺省
path:此元件所在的完整路径,缺省值是_root.
<>内有一个方法
一、wave([num:Number], [speed:Number], [A:Number])
说明:使元件(如位图)旗帜飘动
参数:
num:把元件分割成多少块,越多则越逼真,但速度越慢,
最好是能被位图宽度整除的数(如位图宽度为400,可以取40,80,50等)。缺省值为50
speed:位图抖动的速度,缺省值为50
A:波幅,值越大,抖动幅度越大,缺省为3

相关文章
广告赞助
网友评论

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

用户名:

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

内 容:

(注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码