看看效果吧:
这里下载源文件:
源文件下载
http://file.flash8.net/2003up/2003/5/15/20035151449547704.fla 好了,开工了!
1.建立一个新的动画,将舞台设为450*250
pixels;background颜色为#000000(众人语:搞了半天不就是黑色嘛);framerate为20fps,这是帧运动速度,假如设得太大的话雪就不是飘了,而是落或者下了,没意境,呵呵.
2.用ctrl+f8建立一个名为snowflake的mc.如放大后的图,具体定多大,参考源文件。
http://www.7880.com/Upload/2004_Pack/20035151457375595.jpg" target=_blank>
![](/)
http://www.7880.com/Upload/2004_Pack/20035151457375595.jpg" border=0>
3.在时间轴上建一个图层,用File->import(ctrl+R)导入一个小屋,小屋怎么画就不是本帅哥的事了。搞定后如图.
http://www.7880.com/Upload/2004_Pack/20035151458283969.jpg" target=_blank>
![](/)
http://www.7880.com/Upload/2004_Pack/20035151458283969.jpg" border=0>
4.再建立一个图层,用ctrl+L把资料库面板调出来,把刚才做的名为snowflake的mc拖至舞台的任何一个位置,因为我是用AS控制它的位置的。所以放哪儿没关系,您爱放哪,就放哪吧。定义它的instance
name为flake,在MX中用ctrl+f3调出属性面板,左边就可以定义instance
name。
这样就建好了一个名为flake的对象实例,供后面复制多个雪花用。如图。
http://www.7880.com/Upload/2004_Pack/20035151458283969.jpg" target=_blank>
![](/)
http://www.7880.com/Upload/2004_Pack/20035151458283969.jpg" border=0>
5.再在主场景建立一个图层,也就是第三个图层,用来编AS.代码如下:
//-------------------------------------
//第一帧
//-------------------------------------
//定义雪花飘落的范围
moviewidth
=
450;
movieheight
=
230;
fscommand("allowscale",
"false");//不允许缩放。
//------------------------------------
//第二帧的as.
//-------------------------------------
index++;//复制雪花的下标,可以这样说吧,不过不是数组的。
duplicateMovieClip("flake",
"flake"+index,
index);//复制了一个雪花。
//---------------------------------------------------
//第三帧的as.
//转到第二帧,继续复制雪花,不过下一个index值就加1了。
//---------------------------------------------------
gotoAndPlay(_currentframe-1);
6.点到那个名为flake的对象实例,MX用f9调出Action面板编辑as,flash5中用ctrl+alt+A.其实这一步可以在第四步后就可以做了。这样做大家有点儿不明白,所以放在这一步好讲解。这里的as是object
as,不是frame
as,两者有一定的区别。不知道的话看书或者问我吧,欢迎美女前来!AS
代码如下:
onClipEvent
(load)
{
//随机定义雪花出现的位置
_x
=
random(_root.moviewidth);
_y
=
-1;
//随机定义雪花的大小,使有的大,有的小这样才好看。
ran
=
random(61)+70;
_xscale
=
ran;
_yscale
=
ran;
//随机定义雪花的飘落速度
speed
=
random(4)+2;
}
onClipEvent
(enterFrame)
{
//如果雪花没有飘到底部,继续
if
(_y<_root.movieheight)
{
//雪花新的位置,这样就移动了。
_x
+=
(Math.sin(_y/20)*1.5);
_y
+=
speed;
}
else
{
//如果雪花飘至底部,删除,省得占内存,嘿。
removeMovieClip("");
}
}
按ctrl+enter测试,打完收工!
总结:1.这里的index没有初始化,你可以在第一帧初始化。默认值为0.
说说编程作风问题,其实编大一点的就应该初始化,因为要改的时候就好改,而且明朗,要不然别人看你的
as的话一会儿又冒出一个不知道的变量来就头大了。这里的as较短,所以不必了.(美女语:
AOL好cooool~~~~~~~~~!)
2.对象实例的object
as中有一个onClipEvent(load)就是载入这个实例后会怎么怎么样,就是执行大括号后里的语句。enterFrame看名字也知道是过了一帧,怎么怎么样。
3.本例关键靠一个random函数,它在Math对象中。用它可以定义一个随机整数,比如说random(100),就可以随机搞出一个0--99的整数.