範例:建立基本應用程式

您可以使用 Flash、Flex Builder、Dreamweaver 或任何文字編輯器建立副檔名為 .as 的外部 ActionScript 原始檔案。

您可以在多種應用程式開發環境中使用 ActionScript 3.0,包括 Flash 編寫和 Flex Builder 工具。

本節將逐步說明如何使用 Flash 編寫工具或 Flex Builder 2 工具建立和增強簡單的 ActionScript 3.0 應用程式。您將建立的應用程式會顯示在 Flash 和 Flex 應用程式中使用外部 ActionScript 3.0 類別檔案的簡單模式。這個模式也適用於本手冊的所有其它樣本應用程式。

副主題

設計 ActionScript 應用程式
建立 HelloWorld 專案和 Greeter 類別
將程式碼加入 Greeter 類別
建立使用 ActionScript 程式碼的應用程式
發佈並測試 ActionScript 應用程式
強化 HelloWorld 應用程式

設計 ActionScript 應用程式

在開始建立應用程式之前,您應對要建立的應用程式有些概念。

應用程式的設計可以很簡單,可能列出應用程式的名稱、用途的簡短說明即可,或也可以很複雜,需要撰寫一整份需求文件,其中包含多個統一模組化語言 (UML) 圖解。本手冊不會就軟體設計的原則詳加討論,不過請務必記住,應用程式設計是開發 ActionScript 應用程式的重要步驟。

第一個 ActionScript 應用程式範例就是標準的 "Hello World" 應用程式,因此設計很簡單:

有了清楚的定義之後,接下來就可以開始建立應用程式。

建立 HelloWorld 專案和 Greeter 類別

Hello World 應用程式的設計說明指出程式碼應方便重複使用。因此,應用程式會使用一個名為 Greeter 的物件導向類別,然後用於您在 Flex Builder 或 Flash 編寫工具中建立的應用程式。

在 Flash 編寫工具中建立 Greeter 類別:

  1. 在 Flash 編寫工具中,選取「檔案>新增」。
  2. 在「新增文件」對話框中選取「ActionScript 檔案」,然後按一下「確定」。

    新的 ActionScript 編輯視窗隨即顯示。

  3. 選取「檔案>儲存檔案」。選取一個資料夾來存放應用程式,將 ActionScript 檔案命名為 Greeter.as,然後按一下「確定」。

    繼續將程式碼加入 Greeter 類別

將程式碼加入 Greeter 類別

Greeter 類別會定義物件 Greeter,以用於 HelloWorld 應用程式。

將程式碼加入 Greeter 類別:

  1. 在新檔案中輸入下列程式碼:
    package 
    {
        public class Greeter 
        {
            public function sayHello():String 
            {
                var greeting:String;
                greeting = "Hello World!";
                return greeting;
            }
        }
    }
    

    Greeter 類別包含一個 sayHello() 方法,會將字串 "Hello" 傳回給指定的使用者名稱。

  2. 選取「檔案>儲存檔案」來儲存這個 ActionScript 檔案。

現在就可以在 Flash 或 Flex 應用程式中使用 Greeter 類別。

建立使用 ActionScript 程式碼的應用程式

前面所建立的 Greeter 類別定義了一組獨立的軟體功能,但這還不是完整的應用程式。若要使用類別,您必須建立 Flash 文件或 Flex 應用程式。

HelloWorld 應用程式會建立 Greeter 類別的新實體。下面顯示如何將 Greeter 類別加入應用程式。

使用 Flash 編寫工具建立 ActionScript 應用程式:

  1. 選取「檔案>新增」。
  2. 在「新增文件」對話框中選取「Flash 文件」,然後按一下「確定」。

    新的 Flash 視窗隨即顯示。

  3. 選取「檔案>儲存檔案」。選取存放 Greeter.as 類別檔案所在的同一個資料夾,將 Flash 文件命名為 HelloWorld.fla,然後按一下「確定」。
  4. 在 Flash 的「工具」面板中,選取「文字」工具,然後在「舞台」拖移以定義新的文字欄位,大約是寬 300 像素以及高 100 像素。
  5. 在「屬性」視窗中,當「舞台」上的文字欄位依然處於選取狀態時,輸入 mainText 做為文字欄位的實體名稱。
  6. 按一下主要時間軸的第一個影格。
  7. 在「動作」面板中,輸入下列 Script:
    var myGreeter:Greeter = new Greeter();
    mainText.text = myGreeter.sayHello("Bob");
    
  8. 儲存檔案。

繼續發佈並測試 ActionScript 應用程式

發佈並測試 ActionScript 應用程式

軟體開發是不斷重複同樣步驟的過程。首先是撰寫程式碼、嘗試編譯程式碼,然後編輯程式碼,直到編譯沒問題。接著執行編譯好的應用程式,測試並確定符合當初的設計,如果沒有,就再編輯程式碼,直到符合設計目的為止。Flash 和 Flex Builder 開發環境提供多種方法來發佈、測試和除錯應用程式。

下面是在各環境中測試 HelloWorld 應用程式的基本步驟。

使用 Flash 編寫工具來發佈和測試 ActionScript 應用程式:

  1. 發佈應用程式,並注意是否發生編譯錯誤。在 Flash 編寫工具中選取「控制>測試影片」,編譯 ActionScript 程式碼並執行 HelloWorld 應用程式。
  2. 當您測試應用程式時,如果「輸出」視窗中出現任何錯誤或警告,請修正 HelloWorld.fla 或 HelloWorld.as 檔案中導致這些錯誤的原由,然後再一次測試應用程式。
  3. 如果沒有發生編譯錯誤,您就會看到 Hello World 應用程式出現在 Flash Player 視窗中。此時會顯示 "Hello, Bob" 文字。

您剛才建立了採用 ActionScript 3.0 的物件導向應用程式,雖然簡單,卻很完整。繼續強化 HelloWorld 應用程式

強化 HelloWorld 應用程式

為了讓應用程式多點變化,您現在可以設定應用程式要求使用者輸入名稱,然後根據預先定義的名稱清單進行驗證。

首先需要更新 Greeter 類別來加入新功能。接著再更新 Flex 或 Flash 應用程式來使用新功能。

更新 Greeter.as 檔案:

  1. 開啟 Greeter.as 檔案。
  2. 將檔案內容變更如下 (新增和變更的行會以粗體顯示):
    package
    {
        public class Greeter
        {
            /**
             * Defines the names that should receive a proper greeting.
             */
            public static var validNames:Array = ["Sammy", "Frank", "Dean"];
    
            /**
             * Builds a greeting string using the given name.
             */
            public function sayHello(userName:String = ""):String 
            {
                var greeting:String;
                if (userName == "") 
                {
                    greeting = "Hello. Please type your user name, and then press the Enter key.";
                } 
                else if (validName(userName)) 
                {
                    greeting = "Hello, " + userName + ".";
                } 
                else 
                {
                    greeting = "Sorry, " + userName + ", you are not on the list.";
                }
                return greeting;
            }
            
            /**
             * Checks whether a name is in the validNames list.
             */
            public static function validName(inputName:String = ""):Boolean 
            {
                if (validNames.indexOf(inputName) > -1) 
                {
                    return true;
                } 
                else 
                {
                    return false;
                }
            }
        }
    }
    

    Greeter 類別現在有了數項新功能:

  3. validNames 陣列會列出有效的使用者名稱。當載入 Greeter 類別時,這個陣列會初始化為包含三個名稱的清單。
  4. sayHello() 方法現在可接受使用者名稱,並視情況變更問候內容。如果 userName 是空字串 (""),greeting 屬性會設定提示使用者輸入名稱。如果使用者名稱有效,問候內容會變成 "Hello, userName."。如果最後這兩個條件都不成立,greeting 變數會設為 "Sorry, userName, you are not on the list."
  5. 如果在 validNames 陣列找到 inputNamevalidName() 方法會傳回 true,如果找不到,則會傳回 false。陳述式 validNames.indexOf(inputName) 會檢查 validNames 陣列中的每個字串來比對 inputName 字串。Array.indexOf() 方法會傳回物件第一個實體在陣列中的索引位置,如果在陣列中找不到實體,會傳回值 -1。

接下來就是編輯參考這個 ActionScript 類別的 Flash 或 Flex 檔案。

使用 Flash 編寫工具修改應用程式:

  1. 開啟 HelloWorld.fla 檔案。
  2. 修改「影格 1」中的 Script,改成傳遞空字串 ("") 給 Greeter 類別的 sayHello() 方法:
    var myGreeter:Greeter = new Greeter();
    mainText.text = myGreeter.sayHello("");
    
  3. 選取「工具」面板中的「文字」工具,然後在「舞台」上建立兩個新的文字欄位,將它們並排放置在緊接現有 mainText 文字欄位的下方。
  4. 在第一個新的文字欄位中輸入文字「使用者名稱:」當做標籤。
  5. 選取另一個新的文字欄位,並在「屬性」檢測器中選取 InputText 做為文字欄位的類型。輸入 textIn 當做實體名稱。
  6. 按一下主要時間軸的第一個影格。
  7. 在「動作」面板中,將下面幾行加在現有 Script 的最後面:
    mainText.border = true;
    textIn.border = true;
    
    textIn.addEventListener(KeyboardEvent.KEY_UP, keyPressed);
    
    function keyPressed(event:Event):void
    {
        if (event.keyCode == Keyboard.ENTER)
        {
            mainText.text = myGreeter.sayHello(textIn.text);
        }
    }
    

    新的程式碼增加了下列功能:

  8. 頭兩行只是定義兩個文字欄位的邊框。
  9. 文字輸入欄位如 textIn 欄位,有一組可供它傳送的事件。您可以使用 addEventListener() 方法,定義會在發生某類型事件時執行的函數。在此例中,這個事件即是在鍵盤上按 Enter 鍵。
  10. keyPressed() 自訂函數呼叫 myGreeter 物件的 sayHello() 方法,並傳遞 textIn 文字欄位中的文字當做參數。這個方法會根據傳入的值傳回問候的字串,而傳回的字串則接著指定給 mainText 文字欄位的 text 屬性。

    「影格 1」的完整 Script 如下:

    mainText.border = true;
    textIn.border = true;
    
    var myGreeter:Greeter = new Greeter();
    mainText.text = myGreeter.sayHello("");
    
    textIn.addEventListener(KeyboardEvent.KEY_UP, keyPressed);
    
    function keyPressed(event:Event):void
    {
        if (event.keyCode == Keyboard.ENTER)
        {
            mainText.text = myGreeter.sayHello(textIn.text);
        }
    }
    
  11. 儲存檔案。
  12. 選取「控制>測試影片」,執行應用程式。

    執行這個應用程式時,它會提示您輸入使用者名稱。如果您輸入有效的名稱 (Sammy、Frank 或 Dean),應用程式便會顯示確認訊息 "hello"。


Flash CS3

 

有新的意見加入至這個頁面時,傳送電子郵件給我 | 意見報告

目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000035.html