先看效果:
點擊這里下載源文件
制作步驟:
首先,準備原件.總共有3個原件
原件1:雪花的形狀.也就是隨便畫一個白色的圓代替了.
原件2:雪花的動作.這個MC里存放了雪花飄落的動作.用引導線來做.雪花怎么飄,就看你怎么畫引導線了.
原件3:雪花的生成器.這個MC控制著雪花的生成.
從原件2的結構開始說.請看下面的截圖:
可以看出.雪花"飄"的這個動作是用引導線的方式來實現(xiàn).因為不能只是做一種運動軌跡的飄移方式,因為那看起來太死板,所以,我們多設幾根引導線,再表示多幾種不一樣的雪花"飄"法.
有腳本的楨就是第1楨.第4楨,和每一個引導線結束的那一楨.
第1楨:
timer=random(50)
gotoandplay(3)
第4楨:
if(timer==0)
{var mov;
mov="mov"add random(2)
gotoandplay(mov)
return
}
timer--
gotoandplay(3)
通過這兩楨的腳本可以看出.
這里的TIMER變量是一個時間緩沖變量.也就是說,因為這變量的存在,雪花不會一出來就開始飄,而是等這個變量的值為0的時候才會通過引導線來表現(xiàn)飄的動作.
第4楨中的判定,正是判斷TIMER變量值是不是為0了,如果是,就隨機跳到后面的幾個錨上.即跳到某一個"飄"動作的開始處.
后面那兩句就是讓TIMER不斷減少.然后返回上一楨.再繼續(xù)播放,再減少....當然,這也是在TIMER不為0的情況下執(zhí)行.
"飄"動作結束楨:
gotoandstop(2)
即返回第一楨,繼續(xù)緩沖.準備下一次"飄"動作的進行.
然后是原件3:
原件3要做的事便是加載剛剛那個有"飄"動作的雪花.第一楨:
snow_num=120//定義雪花的數(shù)量
ran_scale=150//定義雪花的尺寸隨機量
angle=30//定義雪花的隨機旋轉(zhuǎn)量
for(n=1;n<=snow_num;n++)//根據(jù)雪花數(shù)量,執(zhí)行"生成雪花"的自定義函數(shù)
{CreateSnow("snow"+n,n)
}
function CreateSnow(sn,n){
var scale
attachMovie("snow",sn,n)//從庫里面加載雪花,也就是原件2
this[sn]._x=random(600)-50//定義它的一些屬性
this[sn]._y=-10
scale=50+random(ran_scale)
this[sn]._xscale=scale
this[sn]._yscale=scale
this[sn]._rotation=-random(angle)
this[sn]._alpha=50+random(80)
}
第5楨:
var sn
for (n=1;n<=snow_num;n++)
{
sn="snow"+n
if(getProperty(sn,_currentframe)==2){
removeMovieClip(sn)
CreateSnow(sn,n)}}
gotoandplay(2)
這一楨里要做的事呢,就是判定那些雪花是不是移動到第2楨了.由原件2里面的代碼可以看出.當雪花飄完了之后,會停在第2楨.那么,在這里,當雪花停在了第2楨,的時候,我們先刪除它,再用"創(chuàng)建雪花"的自定義函數(shù)重新創(chuàng)建它.這一過程實際上是在隨機地改變雪花下一次的位置,角度,大小等屬性,以實現(xiàn)一種隨機,生動的效果.
最后,再把這個原件3放到主場景中,測試影片即可...
實際上,原件3就是整個下雪的場景了.如果你把原件3 的楨直接放到主場景上,那也就是讓主場景"下雪"了.