由Flex談AS3.0相對於AS2.0的新特性和改動

本文介紹了ActionScript 3 相對於 ActionScript 2 有哪些新的特性和改動。並在文章的最後一步步的教大家如何利用 Flex Builder 來編譯並運行第一個 AS3 程序。

語法方面的增強和改動:

  • 引入了 package(包) 和 namespace(命名空間) 兩個概念。其中 package 用來管理類定義,防止命名衝突,而 namespace 則用來控制程序屬性方法的訪問。
  • 新增內置類型 int (32比特整數),uint(非負32比特整數),用來提速整數運算;
  • 新增 * 類型標識,用來標識類型不確定的變量,通常在運行時變量類型無法確定時使用。在 AS2 中這種情況下需要用 Object 賴作爲類型表識;
  • 新增 is 和 as 兩個運算符來進行類型檢查。其中 is 代替 AS2 中的 instanceof 來查詢類實例的繼承關係,而 as 則是用來進行不拋錯誤的類型轉換。
  • 新增 in 運算符來查詢某實例的屬性或其prototype中是否存在指定名稱的屬性。
  • 新增 for each 語句來循環操作 Array 及 Object實例。
  • 新增 const 語句來聲明常量。
  • 新增 Bound Method 概念。當一個對象的方法被付值給另外一個函數變量時,此函數變量指向的是一個 Bound Method,以保證對象方法的作用域仍然維持在聲明此方法的對象上。這相當於 AS2 中的 mx.util.Delegate 類,在 AS3 中這個功能完全內置在語言中,不需要額外寫代碼。
  • AS3 的方法聲明中允許爲參數指定默認值(實現可選參數)。
  • AS3 中方法如果聲明返回值,則必須明確返回。
  • AS2 中表示方法沒有返回值的 Void 標識,在 AS3 中變更爲 void。

OOP方面的增強

通過類定義而生成的實例,在 AS3 中是屬於 Sealed 類型,即其屬性和方法無法在運行時修改。這部分屬性在 AS2 中是通過類的 prototype 對象來存儲,而在 AS3 中則通過被稱爲 Trait 的概念對象存儲管理,無法通過程序控制。這種處理方式一方面減少了通過 prototype 繼承鏈查找屬性方法所耗費的時間(所有父類的實現方法和屬性都會被直接複製到對應的子類的 Trait 中),另一方面也減少了內存佔用量,因爲不用動態的給每一個實例創建 hashtable 來存儲變量。如果仍然希望使用 AS2 中類實例在運行時的動態特性,可以將類聲明爲 dynamic。

api方面的增強

  • 新增 Display API,使 AS3 可以控制包括 Shape, Image, TextField, Sprite, MovieClip, Video, SimpleButton, Loader在內的大部分 DisplayList 渲染單位。這其中 Sprite 類可以簡單理解爲沒有時間軸的 MovieClip,適合用來作爲組件等不需要時間軸功能的子類的基礎。而新版的 MovieClip 也比 AS2 多了對於 Scene(場景)和 Label(楨標籤)的程序控制。另外,渲染單位的創建和銷燬通過聯合 new 操作符以及 addChild/removeChild 等方法實現,類似 attachMovie 的舊方法已被捨棄,同時以後也無須去處理深度值。
  • 新增 DOM Event API,所有 在DisplayList 上的渲染單位都支持全新的三段式事件播放機制,以 Stage 爲起點自上而下的播報事件到 target 對象(此過程稱爲 Capture Phase),然後播報事件給 target 對象(此過程稱爲 Target Phase),最後在自下而上的播報事件(此過程稱爲 Bubbling Phase)。
  • 新增內置的 Regular Expressions (正則表達式)支持,使 AS3 能夠高效地創建、比較和修改字符串,以及迅速地分析大量文本和數據以搜索、移除和替換文本模式。
  • 新增 ECMAScript for XML (E4X) 支持。 E4X 是 AS3 中內置的 XML 處理語法。在 AS3 中 XML 成爲內置類型,而之前的 AS2 版本 XML 的處理 api 轉移到 flash.xml.* 包中,以保持向下兼容。
  • 新增 Socket 類,允許讀取和寫入二進制數據,使通過 AS 來解析底層網絡協議(比如 POP3, SMTP, IMAP, NNTP 等)成爲可能,使 Flash Player 可以連接郵件服務器和新聞組。
  • 新增 Proxy 類來替代在 AS2 中的 Object.__resolve 功能。
  • 新增對於 Reflect (反射)的支持,相關方法在 flash.util.* 包中。

編寫第一個 AS3 程序

編譯 AS3 需要先安裝 Flex Builder 2(目前唯一支持 AS3 的 IDE),從 Adobe Labs 上下在最新版本的 Flex Builder。然後一路 Next 安裝成功之後,點擊快捷方式啓動 Flex Builder。(如圖一)


圖一 Flex Builder 2 啓動畫面

點選工具欄中的 New 按鈕,從彈出的菜單中選擇 ActionScript Project。(如圖二)

 


圖二 建立新的 ActionScript Project

在彈出的對話框中輸入 helloworld 作爲項目名稱。然後按 Finish 確定。(如圖三)


圖三 輸入項目詳細信息

在新打開的 helloworld.as 文件中輸入下列代碼:(如圖四)


圖四 helloworld.as 代碼內容

按 Ctrl+S 保存文件,然後從工具欄中點擊 run 按鈕運行程序。(如圖五)


圖五 運行程序

最終在瀏覽器中的運行效果如圖六:


圖六 helloworld 程序運行結果

 
發佈了25 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章