ActionScript 3.0 可用於多種應用程式開發環境中,其中包括 Flash Professional 和 Flash Builder 工具或者任何文字編輯器。
本範例將逐步說明如何使用 Flash Professional 或 Flash Builder 工具,建立和增強簡單的 ActionScript 3.0 應用程式。您將建立的應用程式,會顯示在 Flash Professional 和 Flex 應用程式中使用外部 ActionScript 3.0 類別檔案的簡單模式。
設計 ActionScript 應用程式
此範例 ActionScript 應用程式是標準的 "Hello World" 應用程式,所以它的設計很簡單:
-
這個應用程式稱為 HelloWorld。
-
它會顯示單一文字欄位,其中包含文字 "Hello World!"
-
這個應用程式使用一個稱為 Greeter 的單一物件導向類別。這種設計可以使用 Flash Professional 或 Flex 專案中的類別。
-
在這個範例中,您會先建立應用程式的基本版本。然後新增功能,讓使用者輸入使用名稱,並讓應用程式在已知的使用者清單中檢查這個名稱。
有了清楚的定義之後,接下來就可以開始建立應用程式。
建立 HelloWorld 專案和 Greeter 類別
Hello World 應用程式的設計說明指出程式碼應方便重複使用。為了達到這個目標,應用程式會使用一個稱為 Greeter 的單一物件導向類別。您從利用 Flash Builder 或 Flash Professional 建立的應用程式中使用這個類別。
利用 Flex 建立 HelloWorld 專案和 Greeter 類別:
-
在 Flash Builder 中,選取「File > New > Flex Project」。
-
輸入 HelloWorld 做為「Project Name」(專案名稱)。確定「Application」(應用程式) 類型設定成「Web (runs in Adobe Flash Player)」,然後按一下「Finish」。
Flash Builder 會建立您的專案並顯示在 Package Explorer 之中。根據預設,此專案應該已經包含一個名為 HelloWorld.mxml 的檔案,而且編輯器已經開啟該檔案。
-
現在,若要使用 Flash Builder 建立自訂的 ActionScript 類別檔案,請選取「File > New > ActionScript Class」。
-
在「New ActionScript Class」對話方塊的「Name」欄位中,輸入
Greeter
做為類別名稱,然後按一下「Finish」。
新的 ActionScript 編輯視窗隨即顯示。
後續步驟請參閱下一節將程式碼加入 Greeter 類別。
在 Flash Professional 建立 Greeter 類別:
-
在 Flash Professional 中,選取「檔案 > 新增」。
-
在「新增文件」對話方塊中選取「ActionScript 檔案」,然後按一下「確定」。
新的 ActionScript 編輯視窗隨即顯示。
-
選取「檔案 > 儲存」。選取一個資料夾來存放應用程式,將 ActionScript 檔案命名為
Greeter.as
,然後按一下「確定」。
後續步驟請參閱下一節將程式碼加入 Greeter 類別。
將程式碼加入至 Greeter 類別
Greeter 類別會定義物件
Greeter
,您可以用於 HelloWorld 應用程式。
將程式碼加入 Greeter 類別:
-
將下列程式碼輸入新的檔案中 (某些程式碼可能已經新增):
package
{
public class Greeter
{
public function sayHello():String
{
var greeting:String;
greeting = "Hello World!";
return greeting;
}
}
}
Greeter 類別包含一個單一的
sayHello()
方法,此方法會傳回一個 "Hello World!" 的字串。
-
選取「檔案 > 儲存檔案」來儲存這個 ActionScript 檔案。
現在,Greeter 類別已經就緒,可以在應用程式中使用了。
建立使用 ActionScript 程式碼的應用程式
前面所建立的 Greeter 類別定義了一組獨立的軟體功能,但這還不是完整的應用程式。若要使用這個類別,您可以建立 Flash Professional 文件或 Flex 專案。
程式碼需要 Greeter 類別的實體。下面顯示如何在應用程式使用 Greeter 類別。
使用 Flash Professional 建立 ActionScript 應用程式:
-
請選取「檔案 > 新增」。
-
在「新增文件」對話方塊中選取「Flash 檔案 (ActionScript 3.0)」,然後按一下「確定」。
新的文件視窗隨即顯示。
-
選取「檔案 > 儲存」。選取存放 Greeter.as 類別檔案所在的同一個資料夾,將 Flash 文件命名為
HelloWorld.fla
,然後按一下「確定」。
-
在 Flash Professional 工具面板中,選取「文字」工具。在「舞台」中拖曳,以便定義寬度大約 300 像素、寬度約 100 像素的新文字欄位。
-
在「屬性」面板中,當「舞台」上的文字欄位依然選取時,將文字類型設定為「動態文字」。輸入
mainText
做為文字欄位的實體名稱。
-
按一下主要時間軸的第一個影格。選擇「視窗 > 動作」來開啟「動作」面板。
-
在「動作」面板中,輸入下列 Script:
var myGreeter:Greeter = new Greeter();
mainText.text = myGreeter.sayHello();
-
儲存檔案。
後續步驟請參閱發佈並測試 ActionScript 應用程式。
使用 Flash Builder 建立 ActionScript 應用程式:
-
開啟 HelloWorld.mxml 檔案,新增程式碼以符合下列內容:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
minWidth="1024"
minHeight="768""
creationComplete="initApp()">
<fx:Script>
<![CDATA[
private var myGreeter:Greeter = new Greeter();
public function initApp():void
{
// says hello at the start, and asks for the user's name
mainTxt.text = myGreeter.sayHello();
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:TextArea id="mainTxt" width="400"/>
</s:Application>
這個 Flex 專案包含四個 MXML 標籤:
-
<s:Application>
標籤,定義應用程式容器
-
<s:layout>
標籤,定義 Application 標籤的版面樣式 (垂直版面)
-
<fx:Script>
標籤,其中包含特定 ActionScript 程式碼
-
<s:TextArea>
標籤,定義一個欄位來顯示文字訊息給使用者
<fx:Script>
標籤中的程式碼會定義應用程式載入時呼叫的
initApp()
方法。
initApp()
方法會將
mainTxt
TextArea 的文字值設為 "Hello World!" 字串,這是由您剛撰寫之 Greeter 自訂類別的
sayHello()
方法所傳回的字串。
-
選取「File > Save」,儲存應用程式。
後續步驟請參閱發佈並測試 ActionScript 應用程式。
發佈並測試 ActionScript 應用程式
軟體開發是不斷重複同樣步驟的過程。首先是撰寫程式碼、嘗試編譯程式碼,然後編輯程式碼,直到編譯沒問題。您將會執行編譯後的應用程式並加以測試,進而查看該應用程式是否具備您想要的設計。如果沒有,您可以再次編輯程式碼,直到達到想要的設計為止。Flash Professional 和 Flash Builder 開發環境提供多種方法來發佈、測試和除錯應用程式。
下面是在各環境中測試 HelloWorld 應用程式的基本步驟。
使用 Flash Professional 發佈和測試 ActionScript 應用程式:
-
發佈應用程式,並注意是否發生編譯錯誤。在 Flash Professional 中選取「控制 > 測試影片」,編譯 ActionScript 程式碼並執行 HelloWorld 應用程式。
-
如果在您測試應用程式時,「輸出」視窗顯示任何錯誤或警告,請在 HelloWorld.fla 或 HelloWorld.as 檔案中修正這些錯誤。然後再次測試應用程式。
-
如果沒有發生編譯錯誤,您就會看到 Hello World 應用程式出現在 Flash Player 視窗中。
您剛才建立了採用 ActionScript 3.0 的物件導向應用程式,雖然簡單,卻很完整。接下來,請繼續強化 HelloWorld 應用程式。
使用 Flash Builder 發佈和測試 ActionScript 應用程式:
-
選取「Run > Run HelloWorld」。
-
HelloWorld 應用程式隨即啟動。
您剛才建立了採用 ActionScript 3.0 的物件導向應用程式,雖然簡單,卻很完整。接下來,請繼續強化 HelloWorld 應用程式。
強化 HelloWorld 應用程式
為了讓應用程式多點變化,您現在可以設定應用程式要求使用者輸入名稱,然後根據預先定義的名稱清單進行驗證。
首先需要更新 Greeter 類別來加入新功能。接著再更新應用程式來使用新功能。
更新 Greeter.as 檔案:
-
開啟 Greeter.as 檔案。
-
將檔案內容變更如下 (新增和變更的行會以粗體顯示):
package
{
public class Greeter
{
/**
* Defines the names that 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 類別現在有了數項新功能:
-
validNames
陣列會列出有效的使用者名稱。當載入 Greeter 類別時,這個陣列會初始化為包含三個名稱的清單。
-
sayHello()
方法現在可接受使用者名稱,並視情況變更問候內容。如果
userName
是空字串 (
""
),
greeting
屬性會設定提示使用者輸入名稱。如果使用者名稱有效,問候內容會變成
"Hello,
userName
"。
如果最後這兩個條件都不成立,
greeting
變數會設為
"Sorry
userName
, you are not on the list"
。
-
如果在
validNames
陣列找到
inputName
,
validName()
方法會傳回
true
,如果找不到,則會傳回
false
。陳述式
validNames.indexOf(inputName)
會檢查
validNames
陣列中的每個字串來比對
inputName
字串。
Array.indexOf()
方法會傳回陣列中某個物件的第一個實體的索引位置。如果在陣列中找不到物件,就會傳回值 -1。
接下來,編輯參照此 ActionScript 類別的應用程式檔案。
使用 Flash Professional 修改應用程式:
-
開啟 HelloWorld.fla 檔案。
-
修改「影格 1」中的 Script,改成傳遞空字串 (
""
) 給 Greeter 類別的
sayHello()
方法:
var myGreeter:Greeter = new Greeter();
mainText.text = myGreeter.sayHello("");
-
選取工具面板中的「文字」工具。在「舞台」上建立兩個新的文字欄位。將這兩個欄位並排放到現有的
mainText
文字欄位下方。
-
在第一個新的文字欄位中 (它是標籤),輸入
User Name:
。
-
選取另一個新的文字欄位,並在「屬性」檢測器中選取「Input Text」做為文字欄位的類型。選取「單行」做為「字行類型」。輸入
textIn
當做實體名稱。
-
按一下主要時間軸的第一個影格。
-
在「動作」面板中,將下面幾行加在現有 Script 的最後面:
mainText.border = true;
textIn.border = true;
textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
function keyPressed(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ENTER)
{
mainText.text = myGreeter.sayHello(textIn.text);
}
}
新的程式碼增加了下列功能:
-
頭兩行只是定義兩個文字欄位的邊框。
-
文字輸入欄位如
textIn
欄位,有一組可供它傳送的事件。您可以使用
addEventListener()
方法,定義會在發生某類型事件時執行的函數。在此例中,這個事件即是在鍵盤上按一個按鍵。
-
keyPressed()
自訂函數會檢查按下的按鍵是否為 Enter 鍵。如果是 Enter 鍵,它會呼叫
myGreeter
物件的
sayHello()
方法,將
textIn
文字欄位中的文字當做參數傳遞。這個方法會根據傳入的值傳回問候的字串,而傳回的字串則接著指定給
mainText
文字欄位的
text
屬性。
「影格 1」的完整 Script 如下:
var myGreeter:Greeter = new Greeter();
mainText.text = myGreeter.sayHello("");
mainText.border = true;
textIn.border = true;
textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
function keyPressed(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ENTER)
{
mainText.text = myGreeter.sayHello(textIn.text);
}
}
-
儲存檔案。
-
選取「控制 > 測試影片」,執行應用程式。
當您執行應用程式時,應用程式會提示您輸入使用者名稱。如果您輸入有效的名稱 (Sammy、Frank 或 Dean),應用程式便會顯示確認訊息 "hello"。
使用 Flash Builder 修改應用程式:
-
開啟 HelloWorld.mxml 檔案。
-
接下來,修改
<mx:TextArea>
標籤,向使用者說明只供顯示。將背景顏色變更成淺灰色,並將
editable
特質設定成
false
:
<s:TextArea id="mainTxt" width="400" backgroundColor="#DDDDDD" editable="false" />
-
現在,在
<s:TextArea>
結束標籤正後方加上下列幾行。這幾行會建立 TextInput 組件,讓使用者輸入使用者名稱值:
<s:HGroup width="400">
<mx:Label text="User Name:"/>
<s:TextInput id="userNameTxt" width="100%" enter="mainTxt.text = myGreeter.sayHello(userNameTxt.text);" />
</s:HGroup>
enter
特質會定義使用者在
userNameTxt
欄位中按下 Enter 鍵所發生的事。在這個範例中,程式碼會將欄位中的文字傳遞至
Greeter.sayHello()
方法。
mainTxt
欄位中的問候內容會跟著一起變更。
HelloWorld.mxml 檔案類似如下:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
minWidth="1024"
minHeight="768""
creationComplete="initApp()">
<fx:Script>
<![CDATA[
private var myGreeter:Greeter = new Greeter();
public function initApp():void
{
// says hello at the start, and asks for the user's name
mainTxt.text = myGreeter.sayHello();
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:TextArea id="mainTxt" width="400" backgroundColor="#DDDDDD" editable="false"/>
<s:HGroup width="400">
<mx:Label text="User Name:"/>
<s:TextInput id="userNameTxt" width="100%" enter="mainTxt.text = myGreeter.sayHello(userNameTxt.text);" />
</s:HGroup>
</s:Application>
-
儲存編輯過的 HelloWorld.mxml 檔案。選取「Run > Run HelloWorld」,執行應用程式。
當您執行應用程式時,應用程式會提示您輸入使用者名稱。如果您輸入有效的名稱 (Sammy、Frank 或 Dean),應用程式便會顯示 "
Hello,
userName
" 確認訊息。
|
|
|