耶誕快樂 – 用Flash和ActionScript 3.0來下場雪花吧

今天就是耶誕節了,先祝各位耶誕節快樂,台灣看不到耶誕節的雪景,那就用Flash和ActionScript 3.0來下場雪送給大家吧,很適合網在網路上,因為才2.69KB而已。

要輕鬆完成隨機且美觀的雪花其實並不難,只要上過我的課或是看過我的書[Flash CS3 Professional ActionScript 3.0打造互動設計力與美]就可以輕鬆完成這個任務了,在這篇文章中就不詳細的說明程式內容了,主要是祝大家耶誕節快樂外加順便來篇輕鬆小品,詳細內容請看書中的說明跟示範。 

STEP1:
首先要飄雪花總是要先把雪花畫出來吧,在這示範一下如何在Flash中快速的畫完雪花,可以用多邊型工具畫出雪花的中心。
snow0.jpg

將[樣式]改成星形,並設定[邊數]為6,[星狀控制點的大小]為0.6。snow1.jpg

這樣畫出來的星形財部會太尖銳,留點圓弧感會比較給人柔和的感覺,畫出來的感覺如下圖。
snow2.jpg

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

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

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

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

STEP4:
寫上以下的ActionScript 3.0來完成整個展示的效果,大略的介紹幾個關鍵的變數和函數,這樣若大家想要修改或調整效果會比較方便:

  1. snowNum是雪花的數量
  2. 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;
 }
}

完成效果:
snow.jpg 

後記:
當大家在狂歡耶誕節的時候,你想到的是耶穌誕生,耶誕老公公還是徹夜狂歡?千萬別想到火雞啊,那是感恩節啦 XD,如果你對耶誕節跟相關的名詞不是很清楚的話,可以參考Wiki上的記載,哼,本來是要寫一篇這個的,既然有人寫過了我就不寫了,請參考耶誕節相關知識 。
 

其實當大家在討論火星文的時候(就是類似Orz這種的),我反倒對一些俚語的由來產生了很大的興趣,例如”抓猴”,我問了google大神,真是眾說紛紜,有人知道標準答案嗎?如果知道的話請不吝指教,到底哪個說法才是有根據的由來?

本篇發表於 ActionScript 與標籤於 anistar固定網址書籤。
本文引用:
文章內容為ANISTAR BLOG所有,引用分享請以鏈結形式註明出處與原始作者。

關於 anistar

現任:台灣區 Yahoo! 專長: Objective C、iOS SDK、Android SDK、Flex 4、RIA、ActrionScript 3、HTML5、CSS3、JQuery、JQuery Mobile、C++、PHP、MySQL...等整合運用。 著作:《Run!PC雜誌》專欄作家、《CADesigner雜誌》專欄作家、《Flash CS3 Professional ActionScript 3.0 打造互動設計力與美》、《新一代互動體驗Flex+AIR程式開發》。 認證:Macromedia Certified Instructor in ColdFusion    Adobe Certified Expert in Photoshop    Adobe Certified Instructor in Flex

20 則迴響於《耶誕快樂 – 用Flash和ActionScript 3.0來下場雪花吧

  1. 板主您好,如果我想把以上的filter 加在button上,請問怎可以做到按一下開按一下關,因為我試過只能不斷增加雪花卻不能減少或關掉,急求答案,感謝

  2. Dear AS 3.0新手:

    那是因為root在ActionScript 3.0中是會變動的,有可能因為用的專案設計不同而有不同的結果,在第二版中我都已經改成this的寫法,確保addChild的動作對象會是一個Container。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *