2015年5月1日 星期五

Flash 與AS3學習簡易指南:給有程式基礎的人

這篇文章,是寫給想學習使用 Flash軟體搭配 ActionScript 3.0語言製作遊戲,並已經有程式基礎的人。如果你還不會寫程式,但有興趣學寫程式,請閱讀〈我想學寫程式,怎麼辦?〉文章。

Flash正在消失嗎?

在開始簡易指南之前,我想先簡單討論一下這個主題。你可能聽過有人說,因為現在有許多瀏覽器已經不支援 FlashPlayer,Flash早晚會被 HTML5取代而消失。這也許讓你有些猶豫,思考著 Flash是否還值得學習。以下我簡單說明我的觀點:

的確 Flash已經漸漸失去在網頁上的舞台,但有很多人不知道 Flash其實有兩大應用的面向。一個面向是為人所熟知的,透過 FlashPlayer內嵌在網頁的應用。另一個則是 Adobe AIR跨平台應用程式的開發。它不只可製作桌面應用程式也可製作行動裝置 App。只要寫一次程式,就可在 Windows、Mac、Android、iOS上運行。目前有許多遊戲 App正是以 Adobe AIR開發的。

所以,在我看來,雖然 Flash失去了網頁的舞台,但它在行動裝置 App的舞台上仍大有可為,因此我並不認同 Flash正在消失的說法。

此外 Flash在長期的發展之下,已經是相當成熟的工具。並且已經有了許多豐富的第三方程式碼資源,有許多現成的遊戲引擎可以使用(包括物理引擎和3D引擎)。因此比起一些新興的 跨平台App開發軟體,它其實有著更大的優勢。

學習 Flash及 ActionScript 3.0的重點

關於如何學習 Flash和 AS3,實在不是一篇文章可以說完的。這篇文章的目的,只是給想要踏入這道門的學習者,提供一些個人的建議,和一些我認為的重點,以便讓學習者能有一個大概的探索及學習的方向。
  1. 物件導向: 寫 Flash的程式有兩種做法,第一種是把程式寫在 Flash檔案(.fla)的影格中。第二種則是把程式寫在 AS3(.as)檔案中,做成類別。第一種做法適合程式初學者。但是熟悉之後就應該放棄這樣的做法。因為程式碼會不好維護,而且也不符合物件導向的精神。第二種才是比較符合物件導向的做法,但思維需要一些轉換。另外 AS3的整個架構,都是以物件導向的思維所建立的,所以如果不了解類別、繼承等物件導向概念,將無法抓到 AS3的精隨。
  2. 顯示物件架構:要做遊戲,必須要了解 AS3的顯示物件架構。「顯示清單」是重要的關鍵字。Stage, Sprite ,MovieClip, DisplayObject 等類別,以及 addChild(),removeChild()等方法的運作都值得去了解。
  3. 事件機制:AS3處處都使用事件,讓各種物件可以協同工作。了解事件機制在 AS3中的運作方式很重要。
  4. 程式與美術的結合:用 Flash做遊戲,通常會直接用 Flash製作遊戲角色和腳色的動畫,因此學會如何使用 Flash的繪圖/動畫工具會有幫助。更重要的是,要知道如何使用 AS3把去和已經做好的遊戲角色美術元件結合,並在需要的時候透過程式,複製出需要的美術元件出來使用,所以需要學習「元件與類別的綁定」。
  5. 不要使用 AS2,它與 AS3是不相容的兩種語言。 AS3的架構更嚴謹,也更符合物件導向精神。所以盡量找 AS3的範例。
  6. 推薦好書:我非常推薦一本書叫做《ActionScript3殿堂之路》,以上的重點都在這本書裡,它的說明很清晰,也很適合用來學習物件導向思維。(但現在這本書好像不好找,可能要花點力氣弄到手,不過我認為是值得的。)
  7. 官方 API以及官方說明文件都有中文版,可以讀一讀:
    ActionScript 3.0 開發人員指南
    適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考