2010年4月30日 星期五

AS3 撰寫外部as檔 從零開始 之 3 as檔案的結構 Class(類別)概述

接下來講到黃色文字的部分

package 
{
        import flash.display.MovieClip;
        public class Main extends MovieClip   
       {
             public function Main()
             {                    
                      stop();
             }
       }
}



就不得不跟各位提一下物件導向(OOP)的概念了,不過請放心,我依然會儘量用容易理解的方法來跟大家說明
as3是屬於純物件(Object)導向程式,整個程式全部都是由 物件 組合起來的其實簡單來說的話,就是你的程式或是動畫,是由一些現成的 物件 組合而成的以flash來說的話,一個動畫,是不是也是由很多個 物件 組合而成的嗎?
比方說MovieClip,按鈕,文字框.....等等諸如此纇的物件


接下來看一下程式碼,我們先注意一下一些關於物件導向的關鍵字,請看黃色文字的部分,這是這一章節的的重點



  • package上一篇說過了,我們直接看 public Main class extends MovieClip 這行程式以下針對每一個關鍵字作說明


  • class 類別,就是剛剛一直再談的它是一個元件的意思
  • Main 這是這個類別的名稱,記得一開始有說了,這支as檔名也必須叫做Main.as,且大小寫需相同,這個名子你可以自己定,一般程式上的習慣,都會用大寫字母開頭
  • public 代表公開的程式,有了這個關鍵字後,你可以在別支as程式(別的class)使用它,你不會希望這個物件,無法拿去跟別的物件組合在一起吧!
  • extends 繼承的意思,這個等等用樂高的例子說明..
  • MovieClip 這個很眼熟吧!影片元件,你每次用flash轉元件時,大部分都選這個吧!
整句public Main class extends MovieClip翻譯起來的意思如下
這是一個公開(public)類別(class),這個類別叫做Main,而它是繼承(extends)MovieClip來的...後面的{  }就是這個class的內容,裡面的程式碼都是屬於Main這個內別的內容


public Main class 這裡應該容易理解,有問題的應該是這裡 extends MovieClip...

extends 繼承的概念是很多物件導向初學者一開始比較難理解的地方,我舉樂高積木的例子來跟各位說明

樂高積木相信大家應該都有玩過(沒玩過好歹也看過),它的玩法是使用方形(或是其他形狀)積木,組合成你想要的形態....例如你可以利用各種不同形狀的積木,作成一台車子,有了車子的雛型後,你可以再為車子加上不同的裝飾,它就可以變成不同的車子,例如車頂上面加一塊看板,使他看起來像是計程車,或是後面加個貨櫃,就變成了貨櫃車..
計程車是由車子這個基礎模型改裝而來的,所以可以說計程車是繼承車子而來的,以上例子寫成程式就變成

public 計程車 class extends 車子

在這裡你會發現物件導向有一個很棒的好處,就是往後你要作車子類的模型,你只要拿車子這個雛型來改裝,或是加上一些東西,你就會得到你想要樣子,而不用從零開始去組裝

我們再回歸原來的程式語法

public Main class extends MovieClip

我們寫一個flash影片,主場景叫做Main,它是由MovieClip去加一些東西而成的....
上述概念是不是很像樂高積木改裝車的概念呢?
沒有物件導向概念寫的程式,你勢必整個程式重新規劃撰寫,就好像你只是要一台計程車,卻要從一堆零散的積木中,重新組裝而成,想必浪費不少時間吧!
如果以上例子你看懂的話,恭喜你,你已經踏岀物件導向(OOP)世界一步了,目前新形態的程式幾乎都是用這個概念,不管是不是AS3,因為它終究爲程式開發省下很多的時間

再來是這句語法 import flash.display.MovieClip;
import匯入的意思,AS3使用外部AS只要你有用到任何零件,都必須要匯入才行,不然flash無法輸出成功
回來看這句話 public Main class extends MovieClip ,意思是利用MovieClip來作成一個Main的類別,也就是說,要作成Main需要的材料就是MovieClip這個零件,所以我們必須匯入MovieClip才能正常輸出

問題來了,要匯入MovieClip這個零件不是只要
import MovieClip;
就行了嗎?為何還得加 flash.display. 這些東西....
如果你注意到第一篇教學說的 package 後面加的路徑,那想必你已經注意到這個用途了
其實MovieClip.as(一般而言,一個class都是一支as程式),是放在 flash/display/MovieClip.as 

這個路徑下面,所以你匯入時也必須加上路徑,flash才找的到它

要怎麼樣知道你用的零件放在哪裡呢?
請按下F1,打開ActionScript 3.0 語言和組件參考 
再左方所有類別找到 MovieClip,請看一下他的套件位置


感覺很麻煩是吧,help裡面很多的套件,代表著你要學的class還很多....
其實關於匯入class的部分,其實大部分的ActionScript工程師都不會用Flash 來撰寫
其實我們都是用一套叫做FlashDevelop的程式編輯器,使用這個他會幫我們直接匯入所需的class,相當方便,有機會再跟大家說明使用方法(或者你可以自己在網路上找一下,資源相當多..)

沒有留言: