只用FLASH做兩個圖層,第一層第一幀放圖片(如果你想制作透明背景的,就不要放圖片);第二層第一幀選中,然后按F9;在出現(xiàn)的動作面板框中貼上下面代碼,就完成了。發(fā)布看看效果。你那里下雪了嗎?
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;
}
}
制作雪花的另外一種方法
主要的構(gòu)思就是通過對一個雪花影片剪輯的復制出許多雪花,當然這是有限度的。不然cpu會受不了的。然后通過設(shè)置復制出來的雪花的位置坐標,達到下雪的效果。
具體步驟
1、 運行flash mx,設(shè)置文檔屬性為500*400。在圖層1繪制一個漸變填充的背景。
2、 新建一個影片剪輯,命名為“雪花”。在編輯區(qū)內(nèi)畫一個簡單的雪花形狀。大小約為11*11像素。
3、 返回到主場景,把影片剪輯“雪花”拖放到場景中,在屬性面板中命名為“snow”。
4、 選中影片剪輯,打開as面板,添加如下語句:
onClipEvent (enterFrame) { //每播放一幀就執(zhí)行一次下面的AS
this._x += Math.random()*(this._xscale)/10;
this._y += Math.random()*(this._yscale)/10;//讓雪花在X、Y軸方向上運動,每次移動的距離為自身大小的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++;
}
---------------------------------------我是分割線---------------------------------------
如果你喜歡我的文章,歡迎掃描二維碼,關(guān)注我的微信公眾號