輔助功能*

 

ActionScript 3.0 概觀


Gary Grossman

Gary Grossman

Adobe 

Emmy Huang

Emmy Huang

Adobe 

出版日期:
2006 年 6 月 27 日
用户级别:
全部

ActionScript 3.0 是一種功能強大、物件導向的程式設計語言, 象徵 Flash Player 執行時期功能向前跨出重大的一步。 ActionScript 3.0 旨在建立一套適合快速製作 Rich Internet Applications 的理想語言, 因為 Rich Internet Applications 已成為網路體驗不可或缺的一環。

ActionScript 的早期版本提供建立真正引人入勝的線上體驗所需的強大功能和靈活彈性。 而覝在, ActionScript 3.0 將此語言進一步提升, 提供優越效能和簡易製作的優點, 以協助您製作更加複雜的應用程式、大型資料集以及物件導向、可重複使用的程式碼基底。 有了 ActionScript 3.0, 開發人員就可運用針對 Flash Player 的內容和應用程式, 實現最佳的生產力和工作表現。

ActionScript 3.0 係以 ECMAScript 為基礎; ECMAScript 為編碼的國際標準程式設計語言。 ActionScript 3.0 與 ECMAScript 語言規格第三版 (ECMA-262*) 相容。 其中還包含了以 ECMA 標準團體目前正在開發的 ECMAScript 第 4 版為基礎的功能。

ActionScript 由 Flash Player 內建的 ActionScript Virtual Machine (AVM) 執行。 虛擬機器 AVM1 係用來執行既有 ActionScript 程式碼, 讓目前的 Flash Player 具備更強大的功能, 並使各種互動媒體和 Rich Internet Applications 得以實現。

但是, 開發人員已將 AVM1 的功能發揮至極致; 現在他們的專案需要更進一步的突破。 ActionScript 3.0 推出全新最佳化的 ActionScript Virtual Machine (AVM2), 其效能遠超過 AVM1。 ActionScript 3.0 程式碼的執行速度比既有 ActionScript 程式碼高出十倍之多。

Flash Player 9 具備此全新 AVM2 虛擬機器; 此虛擬機器也將是執行 ActionScript 時主要使用的虛擬機器。 Flash Player 仍將繼續支援舊版 AVM1, 以向下相容既有的內容。

目前有許多產品會針對 Flash Player 執行時期產生內容與應用程式。 通常這些產品均會整合 ActionScript 支援, 以增加互動功能與行為至其輸出內容。 在 Adobe 產品系列中, 專業設計人員和開發人員可能會在數個工具和伺服器 (例如 Flash、Flex 和 Flash Media Server) 中使用 ActionScript, 以建立適合於 Flash Player 的內容與應用程式。 Flex 產品系列, 包括全新以 Eclipse 為基礎的 Flex Builder 2 IDE, 將會是第一批具備全新 ActionScript 3.0 功能的產品。

ActionScript 3.0 的目標

我們希望 ActionScript 3.0 能提供改善、一致的程式設計模型; 符合業界標準; 提供遠勝於以往的效能。 雖然 ActionScript 3.0 象徵了執行時期的全新程式設計模型, 但是具備基本物件導向程式設計知識的開發人員將能很快上手使用。

ActionScript 3.0 旨在實現下列目標:

  • 安全性: 此語言支援類型安全, 使開發人員可以編寫出明確、可輕鬆維護的程式碼。
  • 簡單明瞭: 此直覺式語言可讓開發人員閱讀和編寫程式, 而不需經常參照參考手冊。
  • 效能: 此語言能讓開發人員編寫出可以有效執行且快速回應的複雜程式。
  • 相容性: 此語言提供有限回溯和向前相容性, 並與多種業界標準相容。 ActionScript 3.0 是 ECMAScript 的一種程式語言方言 (dialect), 將 ActionScript 2.0 的功能正規化、新增 ECMAScript for XML (E4X) 的功能, 並將此語言統一為一致的整體。

ActionScript 3.0 的功能

ActionScript 3.0 包含兩個部份: 核心語言和 Flash Player API。 核心語言定義程式設計語言的基本建立區塊, 例如陳述式、運算式、條件、迴圈和類型。 Flash Player API 包含許多代表和提供對特定 Flash Player 功能存取的類別

ActionScript 3.0 包含許多強大的新功能, 可大幅提升您的開發速度。 規則運算式支援可讓您對文字進行多種功能強大的操作。 ECMAScript for XML (E4X) 可將 XML 轉換為原生資料類型, 大幅簡化 XML 處理程序。 全新的 Display List API 可讓以更直接一致的方式使用視覺化物件。 標準化 DOM 事件模型可加強這些物件在執行時期彼此交談和回應的方式。 這些只是 ActionScript 3.0 諸多全新功能的一部份而已。

語言功能

ActionScript 3.0 承襲 ActionScript 2.0 的核心語言觀點, 遵循 ECMAScript 標準, 並針對某些部份提供多種全新或增強功能。 ActionScript 3.0 語言參照中詳細說明這些功能, 您可在 Adobe Labs 中取得 beta 版。

以下扼要說明對開發人員的優點以及部份新功能的用途。

執行時期例外

在 ActionScript 2.0 中, 許多執行時期錯誤可能會以漸進無提示的方式產生。 如此可確保 Flash Player 不會顯示某些莫名其妙的對話方塊 (就像 JavaScript 在早期網頁瀏覽器中出現的行為) 。 另一方面, 不使用錯誤報告功能讓 ActionScript 程式除錯變得更加困難。

ActionScript 3.0 針對許多常見的錯誤條件提供多種執行時期例外, 改善了除錯體驗, 讓應用程式能更強穩地處理錯誤。 執行時期錯誤可提供堆疊追蹤並加上來源檔和行數資訊註解, 有助於快速指出錯誤。

執行時期類型

在 ActionScript 2.0 中, 類型註解主要提供開發人員協助; 在執行時期會動態輸入所有值。

在 ActionScript 3.0 中, 會將類型資訊保留在執行時期, 並用於多種用途。 Flash Player 會進行執行時期類型檢查, 以提升系統的類型安全。 在原生機器表示法中, 類型資訊亦用來代表變數, 以提升效能並降低記憶體的使用量。

密封類別

ActionScript 3.0 推出密封類別的概念。 密封類別僅包含固定的屬性和方法集 (在編譯時定義); 無法加入其他屬性和方法。 如此便能在編譯時進行更嚴格的檢查, 使程式更強穩。 此外, 由於不需要對每個物件執行個體都使用內部雜湊表, 所以可降低記憶體的使用量。 另外, 您可以使用動態關鍵字來建立動態類別。

方法閉包

在 ActionScript 3.0 中已事件處理簡化; 這要歸功於方法閉包 (method closure), 其中提供了內建的事件分派。 在 ActionScript 2.0 中, 閉包 (closure) 並不會記住它引用的物件執行個體, 因此當呼叫閉包時, 會發生未預期的行為。 mx.utils.Delegate 類別為常用的解決方法; 若要使用它, 您就需要編寫程式碼, 如下所示:

myButton.addEventListener("click", Delegate.create(this, someMethod)); 
Delegate.create(this, someMethod)
		  

但是, 在 ActionScript 3.0 中就不再需要此類別, 因為當參照 someMethod 時, 就會產生方法閉包。 方法閉包將會自動記住其原始物件執行個體。 現在, 您只需編寫:

myButton.addEventListener("click", someMethod);
          

ECMAScript for XML (E4X)

ActionScript 3.0 中已完整建置了 ECMAScript for XML (E4X) - 最近已標準化為 ECMA-357。E4X 提供自然流暢的語言結構集, 用來控制 XML。 與傳統 XML 剖析 API 的方式不同, E4X 讓 XML 用起來就像是該語言的原生資料類型。 E4X 大幅減少所需的程式碼數量, 簡化了控制 XML 的應用程式的開發工作。

閱讀更多有關 E4X 規格的資訊* (PDF, 1.8 MB)

規則運算式

ActionScript 3.0 包含對規則運算式的原生支援, 讓您快速搜尋和控制字串。 ActionScript 3.0 建置了在 ECMAScript 語言規格 (ECMA-262) 中定義的規則運算式。

名稱空間

名稱空間是控制宣告可見性的創新機制。 與用來控制宣告可見性 (public、private、protected) 的傳統存取修飾子相似, 名稱空間基本上是自訂的存取修飾子, 可包含您選擇的名稱。 例如, Flex 架構將 mx_internal 名稱空間用於其內部資料。 名稱空間包含通用資源識別項 (Universal Resource Identifier, URI) 以避免發生衝突, 並且在使用 E4X 時, 也可以用它來代表 XML 名稱空間。

全新基本類型

ActionScript 2.0 包含單一數值類型 ( Number)、雙精度浮點數。 ActionScript 3.0 的其中一項受歡迎新增功能為全新的 int 類型 - 32 位元帶正負符號的整數, 讓 ActionScript 程式碼可運用 CPU 的快速整數運算功能。 這種 int 類型最適用於迴圈計數器以及大部份不需要小數點的計算。 另一個新類型為 uint, 不含正負符號的 32 位元整數類型, 類似於 int

Flash Player API 功能

Flash Player API 為類別和函數集, 以 ActionScript 語言來使用 Flash Player 功能。 此項功能銜接起 ActionScript 核心語言和平台的其他部份。 它是 Flash 應用程式諸多強大功能的來源, 對於核心語言而言, 是十分重要的輔助功能。 雖然本文限於篇幅, 無法詳細介紹此 API, 以下僅簡要列出開發人員可用的部份全新和有趣的功能:

DOM3 事件控制模型

事件模型提供標準的方式來產生和處理事件訊息, 使應用程式中的物件可互動和通訊、維持狀態以及回應變更。 此模型係根據 W3C DOM3 Events 規格而建立, 具備比舊版 ActionScript 提供的事件系統更清楚更有效率的機制。 由於 Flex 應用程式架構使用與 Flash Player API 相同的事件模型, 所以平台中從上到下的事件系統均可獲得統一。

Display List API

Display List API 包含改善的類別集, 可與 Flash 中的基本視覺類別搭配使用。

全新的 Sprite 類別為精簡的建立區塊, 與 MovieClip 相似, 但是更適合當成 UI 元件的基本類別。 全新的 Shape 類別代表原始向量外形。 這些類別可使用新的運算子自然地執行個體化, 並可隨時動態重新成為父項。

不再需要指定顯示清單物件的深度階層值。 現在, 深度管理已成為 Flash Player 的內建自動功能。 提供新的方法來指定和管理物件的疊置順序 (Z-order)。

下一步

本 ActionScript 3.0 概觀中僅概述當您進一步瞭解 ActionScript 3.0 時, 將會發現的一些令人驚豔的 API 和語言功能。 LiveDocs 上的程式設計 ActionScript 3.0 (或以 PDF 格式提供*) 是瞭解如何在 ActionScript 中建置程式設計概念的最佳起點, 而 ActionScript 3.0 語言參照*則提供有關核心語言和 Flash Player API 的完整資訊。 此外, 如果您已熟悉 ActionScript 1.0 或 2.0, 歡迎參閱學習 ActionScript 3.0 的秘訣

Flash Player 團隊很高興能透過 Adobe Labs, 為社群簡介此種語言、其新功能和改善效能。 您將可以探索 ActionScript 3.0, 並透過 Flex Builder 2、Flex 架構、Flex Data Services 2 和 Flash Player 9, 瞭解我們未來發展此語言的方向。 希望您和我們一樣, 對於此平台的未來感到振奮, 並期盼您透過 Adobe Labs 提供您的意見。

關於作者

Gary Grossman 是軟體架構設計師, 在 Adobe 負責 Flash Player。 他在 1998 年加入 Macromedia 的 Flash 團隊, 從 Flash 4 之後參與每一個 Flash 版本的開發, 歷經過多種職務, 從工程師到管理階層。 他曾有幸與 Flash 界大師同時也是 Flash 的原創者 Jonathan Gay 共事。 Gary 在 Flash 4、Flash 5 和 Flash MX 中主要負責開發 ActionScript 程式設計語言。他目前仍積極投入 ActionScript 程式設計語言的發展。 Gary 目前居住和工作於加州舊金山。

Emmy Huang 是 Flash Player 的資深產品經理。她的資歷包括分別在 Sony Pictures Digital、Liberate Technologies 和 Intel 等公司中, 針對廣泛的數位娛樂技術, 從事工程和產品管理。她在 UCLA 攻讀 MBA 時, 曾有一小段時期考慮轉換工作跑道, 但後來還是決定從事軟體銷售, 因為她認為這比銷售漂白劑更有趣。