ActionScript 是原 Macromedia 公司（後併入 Adobe）為其 Flash 產品開發的一種基於 ECMAScript 的面向物件程式語言。ActionScript 可用於網頁製作、Adobe Flash 動畫和 Adobe AIR 應用程式的開發。 ActionScript 和 JavaScript 均基於 ECMAScript 語法，因而擁有類似的語法。理論上它們互相可以很流暢地從一種語言翻譯到另一種。不過 JavaScript 的文件物件模型是以瀏覽器視窗、文件和表單為主的，ActionScript 的文件物件模型則以 SWF 格式動畫為主，可包括動畫、音訊、文字和事件處理。 ActionScript 開發時可藉由匯入 ANE 作為跨平臺使用；並且官方公佈之認證 Starling （基於 OPGL 協定）開放框架，可使用 GPU 高速繪圖，而非傳統的 CPU 運算功能。 歷史 ActionScript 首次出現於 Flash 5 並實現了在 Flash 內程式設計。這個版本被命名為 ActionScript 10。Flash 6 透過增加大量的內建函式和對動畫元素更好的程式設計控制更進一步增強了程式設計環境的功能。Flash 7（MX 2004）引進了 ActionScript 20，它增加了強型別和麵向物件特徵，如顯式類宣告、繼承、介面和嚴格資料型別。ActionScript 10 和 20 使用相同的編譯形式編譯成 Flash SWF 檔案。 播放器發展時間表 版本 發布日期 描述 Flash Player 2 19970617 第一個支援指令碼的版本，包括控制時間軸的 gotoAndPlay、 gotoAndStop、nextFrame 和 nextScene 等方法。 Flash Player 3 19980531 增強了載入外部 SWF 檔案的基本指令碼支援（loadMovie）。 Flash Player 4 19990615 第一個完全實現指令碼功能（稱為「動作」）的播放器。這些指令碼擁有簡練的語法和對迴圈、條件、變數和其它基本語言結構的支援。 Flash Player 5 20000824 第一個擁有真正意義上的 ActionScript 的版本。依據 ECMAScript，採用基於原型程式設計，並允許完全的程序式程式設計和麵向物件程式設計。 Flash Player 6 20020315 增加了事件處理模型，並且支援 switch。 Flash Player 7 20030910 提供一些新特性，如支援 CSS 顯示文字和增強顯示效果。Macromedia Flash 編譯器和 Flash Player 7 同時支援基於 ECMAScript 4 Netscape Proposal 的類程式語言 ActionScript 20。不過 ActionScript 20 能交叉編譯成 ActionScript 10 的位元組碼，因此它能運行於 Flash Player 6。 Flash Player 8 20050913 增加用於執行時圖象資料控制和檔案上傳的新類庫及 APIs，ActionScript 20 功能更為完善。 Flash Player 9 20060622 原稱為 Flash Player 85，增加 ActionScript 30 和一個稱為 AVM2（ActionScript Virtual Machine 2）新的虛擬機器，它可以與前版本 AVM1 共存以便支援舊內容。增強效能是該版本的主要目標。這是 adobe 收購 Macromedia 後的第一個版本，並且也是 Mac OS X 上第一個 Universal 版本的 Flash Player。 Flash Player 10 20081015 支援多執行緒。 Flash Player 11 20111004 運用 Stage3D API 提供的硬體加速影像渲染，支援 GPU 加速。 Flash Player 14 20140610 支援 AGAL2 Flash Player 170093（閱覽版 Beta） 20150312 支援 64 位元 PC 全平臺 Flash Player 1700171（正式版） Flash Player 18（閱覽版 Beta） 20150609 支援 PC 瀏覽器最佳化 支援 3D 支援持續擴充 Flash Player 19 20150921 Flash Player 20 20151208 增強視訊處理和資訊防盜功能 Flash Player 21 20160310 針對 FLASH 與 HTML5 結合運用 完善相關 API 與火狐團隊合作 並針對火狐特殊需求增加支援 GPU 渲染 3D 記憶體處理 強化 MAC 平臺支援 Flash Player 22 20160616 處理字典訊息問題 XML 修正 PPAPI 印刷修正 針對 Chrome 瀏覽器修正橫向模式 大空字元修正 新增 EnableLocalAppData 作為安全性功能提供 與 Google 合作修正視訊路線處理 桌面 APP 時間表 2007 年 3 月 19 日：釋出 AIR public preview（當時稱 Apollo）及軟體開發工具包（SDK）。 2007 年 6 月 10 日：Apollo 更名為 AIR 及釋出 AIR Public beta。 2007 年 10 月 1 日：釋出 AIR Public beta 2。 2007 年 12 月 12 日：釋出 AIR Public beta 3。 2008 年 2 月 25 日：釋出 AIR 10 版本。 2008 年 6 月 17 日：釋出 AIR 11 版本。 2008 年 11 月 17 日：釋出 AIR 15 版本。 2009 年 2 月 24 日：釋出 AIR 151 版本。 2009 年 7 月 30 日：釋出 AIR 152 版本。 2009 年 12 月 8 日：釋出 AIR 153 版本。 2010 年 6 月 10 日：釋出 AIR 20 版本。 2010 年 10 月 24 日：釋出 AIR 25 版本。 2011 年 2 月 24 日：釋出 AIR 26 版本。 2011 年 6 月 14 日：釋出 AIR 27 版本。 2011 年 10 月 3 日：釋出 AIR 30 版本。 2011 年 11 月 11 日：釋出 AIR 31 版本。 2012 年 3 月 28 日：釋出 AIR 32 版本。 2012 年 6 月 5 日：釋出 AIR 33 版本。 2012 年 8 月 21 日：釋出 AIR 34 版本。 2012 年 11 月 6 日：釋出 AIR 35 版本。 2013 年 2 月 12 日：釋出 AIR 36 版本。 2013 年 4 月 9 日：釋出 AIR 37 版本。 2013 年 7 月 24 日：釋出 AIR 38 版本。 2013 年 10 月 8 日：釋出 AIR 39 版本。 2013 年 10 月 30 日：釋出 AIR 40 版本。 2014 年 4 月 8 日：釋出 AIR 130 版本。 2014 年 6 月 10 日：釋出 AIR 140 版本。 2014 年 9 月 9 日：釋出 AIR 150 版本。 2014 年 11 月 11 日：發布 AIR 160 版本（Beta），全面支援 win8 64 位元 android 50 ios 8。 2015 年 1 月 22 日：發布 AIR 160 版本（正式版），全面支援 win8 64 位元 android 50 ios 8。 2015 年 2 月 4 日：發布 AIR 170 版本（Beta），強化支援 3D 特效與其他視訊效果，並最佳化效率。 2015 年 4 月 14 日：發布 AIR 1700171 版本（正式版）。 2015 年 4 月 22 日：發布 AIR 180 版本（Beta），3D 功能擴充，最佳化 IOS 效率 20。 2015 年 5 月 13 日：開源團隊開啟支援 linux ubuntu 計畫。 2015 年 7 月 8 日：釋出 AIR 180 版本。 2015 年 9 月 21 日：釋出 AIR 190 版本，增加安全性和增加 IOS 支援。 2015 年 11 月 18 日：釋出 AIR 200（Beta）版本。增加 android TV 等跨平臺 TV 支援技術研發。 2016 年 6 月 16 日：釋出 AIR 210 版本。強化視訊和攝影機路線規劃、高畫質處理、效能最佳化和移動平臺相關開發。 語言 語法 在 ActionScript 20 裡，函式館物件（如影片片段、按鈕）可與類聯絡在一起。類可寫在外在檔案檔案內，並且這些檔案必須有as 字尾。類是增設部分對 ActionScript 語言來說，可讓程式員自行開發，雖然有許多內建類譬如 MovieClip 類可被用來動態地在螢幕上畫出向量已經滿足需求了。類檔案可使程式設計更加容易，並且類檔案如果需要的話可在許多專案間轉移。 Flash ActionScript 實現的特點如下，JavaScript 程式員也許感興趣： 一切設計是非同步的；回撥函式是普遍存在的，但事件物件不存在。 XML 的實現從 Flash 5 便存在了。Flash 可送和收 XML，該項功能可用來透過網路伺服器創造網上多玩者遊戲。 ActionScript 程式碼常常直接寫在 Flash 開發環境。該環境提供參考、程式碼提示和句法強調。原始碼常常與電影一起存在fla 檔案裡。自外部檔案檔透過 include 語法匯入 ActionScript 程式碼也相當常見。在這種情況下，外部檔案也許被 Flash 整合開發環境內建編譯器，或 Motion Twin ActionScript2 編譯器（MTASC）編譯。 評價 示例 ActionScript 20 樣本 下 面 列印 Hello World。值得注意的是這只能在整合環境下執行，因為 trace 函式只有支援整合環境。 trace Hello world 下 面 程式碼利用 onMouseMove 事件當滑鼠移動時輸出現行滑鼠位置。同樣的這只有在整合環境下執行。 onMouseMove function trace X_root_xmouse trace Y_root_ymouse 這個較先進的範例創造一個包括數字與字串的陣列，並利用原形函式（prototype function）與函式遞迴給變數名 num 指定一個數，給變數 str 指定一個字串。然後，利用 MovieClip 應用程式介面，文字區域被顯示在螢幕上，文字區域裡頭寫入了變數值。 var my_ArrayArray new Array Hello ActionScript 3 7 11 Flash ArrayprototypepickNumber function Number var randNumber random thislength return typeof this rand number this rand thispickNumber ArrayprototypepickString function String var randNumber random thislength return typeof this rand string this rand thispickString var numNumber my_ArraypickNumber var strString my_ArraypickString _rootcreateTextField txt 1 10 10 530 390 txttext Array my_ArraynRandom Number numnRandom String str ActionScript 30 樣本 下面先進的 Hello World 程式目前需要在 Flex 20 公開 Alpha 測試版整合環境中編譯。 package import flashtextTextField import flashdisplayMovieClip import flashfiltersDropShadowFilter public class HelloWorld extends MovieClip public function HelloWorld var shadDropShadowFilter new DropShadowFilter 2 45 0x000000 25 3 3 2 2 var txtTextField new TextField txttextColor 0xFFFFFF txtfilters shad txtwidth 120 txtx Mathrandom 300 txty Mathrandom 300 txtselectable false txttext Hello World Mathround txtxMathround txty addChild txt ActionScript30 as30 最重要的概念就是在效能方面的增進，平時所加入的任何事件都可以被監聽或從記憶體中移除 以下例子就是監聽與移除記憶體佔用，這是 as30 最重要的基礎概念 bt1addEventListener MouseEventCLICKbt1_click function bt1_click eMouseEventvoid 觸發的事件內容； 該按紐監聽不需要時則 remove 掉，增加效能 bt1removeEventListener MouseEventCLICKbt1_click Starling GPU 開發樣本 匯入 SWC 或相關 SDK 以後，在建構子內加入以下這段，便可啟用 GPU 高速框架開發相關 swf 或是跨平臺軟體。 var _starling new Starling MainGame stage _starlingstart 參見 ECMAScript Lingo for Macromedia Director Macromedia Flash Scripting Macromedia 參考資料 外部連結 官方 API Macromedia 實驗室 Macromedia 發展中技術資源站（英） Category 程式設計語言 Category 指令碼語言 Category 基於類的程式語言 Category1998 年建立的程式語言