如何利用as制作雪花效果?
解决思路(必须要有)
具体步骤
1, 运行flash mx,在图层1的第1帧绘制一个渐变填充的背景。如图1所示。
图1 绘制背景
2, 在这一帧上添加如下代码:
function createSnowflake(n) {
// 建立一个空的MC
this.createEmptyMovieClip("snowflake"+n, n);
mc = this["snowflake"+n];
// 把线型设置为极细线,白色,半透明
mc.lineStyle(0, 0xFFFFFF, 50);
// 设置一个随机变量numSpikes,用它来存储雪花的瓣数
numSpikes = Math.round(Math.random()*5)+5;
// 设置随机的雪花半径长度
spikeRadius = Math.random()*5+5;
// 开始画雪花了,使用lineTo命令
for (var i = 0; i<numSpikes; i++) {
mc.moveTo(0, 0);
spikeAngle = 2.0*Math.PI*i/numSpikes;
x = spikeRadius*Math.cos(spikeAngle);
y = spikeRadius*Math.sin(spikeAngle);
mc.lineTo(x, y);
}
// 返回MC
return (mc);
}
function initSnowflakes(n) {
// 把参数n置入numSnowflakes
numSnowflakes = n;
// 建立n个MC
for (var i = 0; i<numSnowflakes; i++) {
mc = createSnowflake(i);
// 设置MC的位置为随机
mc._x = Math.random()*550;
mc._y = Math.random()*400;
// 设置随机的雪花下落速度
mc.speed = Math.random()*3+3;
// 随机的飘移速度
mc.drift = Math.random()*2-1;
//随机的旋转速度
mc.rotate = Math.random()*18-9;
}
}
function moveSnowflakes() {
// 开始移动numSnowflakes个雪花
for (var i = 0; i<numSnowflakes; i++) {
// 下落+飘移+旋转
mc = this["snowflake"+i];
mc._y += mc.speed;
mc._x += mc.drift;
mc._rotation += mc.rotate;
// 如果落到最下面就从上部重来
if (mc._y>400) {
mc._y = 0;
}
// 如果走出左右边界的话就从相反的一边出现
if (mc._x<0) {
mc._x = 550;
}
if (mc._x>550) {
mc._x = 0;
}
}
}
// 开始初始化,50个雪花
initSnowflakes(50);
stop();
//每帧都执行函数moveSnowflakes
_root.onEnterFrame = function() {
_root.moveSnowflakes();
};
本文作者: