分享

用flash制作雪花飘飘的动画

 zchening 2010-03-23
1、最简单的方法:

只用FLASH做两个图层,第一层第一帧放图片(如果你想制作透明背景的,就不要放图片);第二层第一帧选中,然后按F9;在出现的动作面板框中贴上下面代码,就完成了。发布看看效果。你那里下雪了吗?

fallSnow(this, 100, [550, 400]);

function fallSnow(path, num, size) {

for (var i = 0; i<num; i++) {

path.createEmptyMovieClip("s"+i, i);

var mc = path["s"+i];

mc._x = random(size[0]);

mc._y = random(size[1]);

mc.ro = [1, -1][random(2)];

mc.xtime = random(20);

mc.startTime = 0;

mc.id = Math.pow(i, 1/2);

createSnow(mc, mc.id/2.5, "0xffffff", 20*mc.id);

}

var loop = function () {

updateAfterEvent();

for (var i = 0; i<num; i++) {

var mc = path["s"+i];

mc._rotation += mc.ro*5;

mc._x += mc.id*mc.ro/10;

mc._y += mc.id/2;

mc.startTime++;

scanTar(mc);

scanEdge(mc, size);

}

};

var interval = setInterval(loop, 10);

}

function createSnow(mc, radius, c, alpha) {

with (mc) {

moveTo(0, -radius);

beginFill(c, alpha);

lineStyle(0, "0x000000", 0);

for (var i = 1; i<=6; i++) {

var a1 = -Math.PI/6+i*Math.PI/3;

var a2 = i*Math.PI/3;

lineTo((radius/5)*Math.sin(a1), -(radius/5)*Math.cos(a1));

lineTo(radius*Math.sin(a2), -radius*Math.cos(a2));

}

endFill();

}

}

function scanTar(mc) {

if (mc.startTime>=mc.xtime) {

mc.startTime = 0;

mc.xtime = random(20);

mc.ro = [1, -1][random(2)];

}

}

function scanEdge(mc, size) {

if (mc._x>size[0]) {

mc._x = 0;

} else if (mc._x<0) {

mc._x = size[0];

}

if (mc._y>size[1]) {

mc._y = 0;

}

}

制作雪花的另外一种方法

  主要的构思就是通过对一个雪花影片剪辑的复制出许多雪花,当然这是有限度的。不然cpu会受不了的。然后通过设置复制出来的雪花的位置坐标,达到下雪的效果。

  具体步骤

  1 运行flash mx,设置文档属性为500*400。在图层1绘制一个渐变填充的背景。

  2 新建一个影片剪辑,命名为“雪花”。在编辑区内画一个简单的雪花形状。大小约为11*11像素。

    3 返回到主场景,把影片剪辑“雪花”拖放到场景中,在属性面板中命名为“snow”。

  4 选中影片剪辑,打开as面板,添加如下语句:

onClipEvent (enterFrame) {  //每播放一帧就执行一次下面的AS 
this._x += Math.random()*(this._xscale)/10; 
this._y += Math.random()*(this._yscale)/10;//
让雪花在XY轴方向上运动,每次移动的距离为自身大小的1/10左右,为加强随机效果,我们用到Math.random()来更好的控制。
 
if (this._x>500) { 
this._x = 0; 
}
  //当雪花飘出主场景时,重新回到主场景的左方。
 
if (this._y>400) { 
this._y = 0; 
}
  //当雪花飘出主场景时,重新回到主场景的上方。
 
}

 5, 新建一个图层,在第1帧添加as

i = 1; 
while (i<=200) { 
duplicateMovieClip("snow", "snow"+i, i); 
setProperty("snow"+i, _x, random(500)); 
setProperty("snow"+i, _y, random(400)); 
setProperty("snow"+i, _xscale, Math.random()*60+40); 
setProperty("snow"+i, _yscale, eval("snow"+i)._xscale); 
setProperty("snow"+i, _alpha, eval("snow"+i)._xscale+random(30)); 
i++; 
}


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多