12.24
今天就是耶誕節了,先祝各位耶誕節快樂,台灣看不到耶誕節的雪景,那就用Flash和ActionScript 3.0來下場雪送給大家吧,很適合網在網路上,因為才2.69KB而已。
要輕鬆完成隨機且美觀的雪花其實並不難,只要上過我的課或是看過我的書[Flash CS3 Professional ActionScript 3.0打造互動設計力與美]就可以輕鬆完成這個任務了,在這篇文章中就不詳細的說明程式內容了,主要是祝大家耶誕節快樂外加順便來篇輕鬆小品,詳細內容請看書中的說明跟示範。
STEP1:
首先要飄雪花總是要先把雪花畫出來吧,在這示範一下如何在Flash中快速的畫完雪花,可以用多邊型工具畫出雪花的中心。

將[樣式]改成星形,並設定[邊數]為6,[星狀控制點的大小]為0.6。
這樣畫出來的星形財部會太尖銳,留點圓弧感會比較給人柔和的感覺,畫出來的感覺如下圖。

STEP2:
接下來用線段工具來畫出雪花的線。

線段的粗細可以自己決定,完全是看雪花中心搭配起來的狀況來決定,請畫出類似這樣的圖案。

STEP3:
將剛剛畫完的圖形組合在一起,並將顏色改成白色,這樣雪花的雛形就大致完成了,完成效果如下圖。


完成後請轉換成影片片段,剩下的動畫和濾鏡效果交給ActionScript 3.0就可以快速完成了。

STEP4:
寫上以下的ActionScript 3.0來完成整個展示的效果,大略的介紹幾個關鍵的變數和函數,這樣若大家想要修改或調整效果會比較方便:
- snowNum是雪花的數量
- moveHandler用來控制動畫效果
剩下的就交給大家去發揮了!
懶得自己做的人,可以下載最後的成果。
import flash.filters.GlowFilter;var snowNum:int = 20;
var snow:MovieClip;
for (var i:int=0; i<snowNum; i++) {
snow = new Snow();
this.addChild(snow);
var randomValue:Number = Math.random()*1+1;
snow.x=Math.random()*stage.stageWidth;
snow.y=Math.random()*stage.stageHeight;
snow.scaleX=snow.scaleY=randomValue;
snow.alpha=Math.random()*randomValue+0.3;
snow.rotation=Math.random()*360;
snow.filters = [new GlowFilter(0xFFFFFF,0.5)];
snow.addEventListener(Event.ENTER_FRAME,moveHandler);
}function moveHandler(event:Event):void {
var target:MovieClip = event.target as MovieClip;
target.x += Math.random()*target.width/50+1;
target.y += target.width/50+1;
target.rotation++;
if (target.y > stage.stageHeight+target.height/2) {
target.y=-target.height/2;
}
if (target.x > stage.stageWidth+target.width/2) {
target.x=-target.width/2;
}
}
完成效果:
後記:
當大家在狂歡耶誕節的時候,你想到的是耶穌誕生,耶誕老公公還是徹夜狂歡?千萬別想到火雞啊,那是感恩節啦 XD,如果你對耶誕節跟相關的名詞不是很清楚的話,可以參考Wiki上的記載,哼,本來是要寫一篇這個的,既然有人寫過了我就不寫了,請參考耶誕節相關知識 。
其實當大家在討論火星文的時候(就是類似Orz這種的),我反倒對一些俚語的由來產生了很大的興趣,例如"抓猴",我問了google大神,真是眾說紛紜,有人知道標準答案嗎?如果知道的話請不吝指教,到底哪個說法才是有根據的由來?
相關文章:
文章內容由宋志峰[ANISTAR]撰寫,引用分享請以鏈結形式註明出處與原始作者。


板主您好,如果我想把以上的filter 加在button上,請問怎可以做到按一下開按一下關,因為我試過只能不斷增加雪花卻不能減少或關掉,急求答案,感謝
抱歉我不太懂你的意思,可否描述的清楚一點,我比較好回答你的問題。
即怎麼把FILTER加入BUTTON,做到開BUTTON﹣>出現雪花;關BUTTON﹣>雪花消失的效果~謝謝
瞭解了, 如果是這樣, 最簡單的方法就是將雪花加入在某個MovieClip中, 在點擊Button時直接對該MovieClip的visible設定(true/false)即可.
請問一下,有辦法把雪花放在字的後面嗎!~~
當然可以,你只要能用ActionScript控制深度即可。
板主您好,請問可以引用至我的部落格嗎?謝謝您!!
沒問題,歡迎引用,請麻煩註明出處喔
大感謝老師抽空回應>
Dear AS 3.0新手:
那是因為root在ActionScript 3.0中是會變動的,有可能因為用的專案設計不同而有不同的結果,在第二版中我都已經改成this的寫法,確保addChild的動作對象會是一個Container。