ActionScript

ActionScript是原Macromedia公司（后并入Adobe）为其Flash产品开发的一种基于ECMAScript的面向对象编程语言。ActionScript可用于网页制作、Adobe Flash动画和RIA应用程序的开发。

ActionScript和JavaScript均基于ECMAScript语法，因而拥有类似的语法。理论上它们互相可以很流畅地从一种语言翻译到另一种。不过JavaScript的文档对象模型是以浏览器窗口、文档和表单为主的，ActionScript的文档对象模型则以SWF格式动画为主，可包括动画、音频、文字和事件处理。

ActionScript 開發時可藉由導入 ANE 作為跨平台使用；並且官方公布之認證Starling （基於OPGL協定）開放框架，可使用GPU高速繪圖，而非傳統的CPU運算功能。

歷史 

ActionScript 首次出现于Flash 5并实现了在Flash内编程。这个版本被命名为ActionScript 1.0。Flash 6通过增加大量的内置函数和对动画元素更好的编程控制更进一步增强了编程环境的功能。Flash 7（MX 2004）引进了ActionScript 2.0，它增加了强类型和面向对象特征，如显式类声明、继承、接口和严格数据类型。ActionScript 1.0 和 2.0 使用相同的编译形式编译成Flash SWF文件。

播放器發展時間表

桌面+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 1.0版本。
2008年6月17日：發佈AIR 1.1版本。
2008年11月17日：發佈AIR 1.5版本。
2009年2月24日：發佈AIR 1.5.1版本。
2009年7月30日：發佈AIR 1.5.2版本。
2009年12月8日：發佈AIR 1.5.3版本。
2010年6月10日：發佈AIR 2.0版本。
2010年10月24日：發佈AIR 2.5版本。
2011年2月24日：發佈AIR 2.6版本。
2011年6月14日：發佈AIR 2.7版本。
2011年10月3日：發佈AIR 3.0版本。
2011年11月11日：發佈AIR 3.1版本。
2012年3月28日：發佈AIR 3.2版本。
2012年6月5日：發佈AIR 3.3版本。
2012年8月21日：發佈AIR 3.4版本。
2012年11月6日：發佈AIR 3.5版本。
2013年2月12日：發佈AIR 3.6版本。
2013年4月9日：發佈AIR 3.7版本。
2013年7月24日：發佈AIR 3.8版本。
2013年10月8日：發佈AIR 3.9版本。
2013年10月30日：發佈AIR 4.0版本。
2014年4月8日：發佈AIR 13.0版本。
2014年6月10日：發佈AIR 14.0版本。
2014年9月9日：發佈AIR 15.0版本。
2014年11月11日：發布AIR 16.0版本（Beta），全面支援win8 64位元 /android 5.0 /ios 8。
2015年1月22日：發布AIR 16.0版本（正式版），全面支援win8 64位元 /android 5.0 /ios 8。
2015年2月4日：發布AIR 17.0版本（Beta），強化支援3D特效與其他視訊效果，並優化效率。
2015年4月14日：發布AIR 17.0.0.171版本（正式版）。 
2015年4月22日：發布AIR 18.0版本（Beta），3D功能擴充，優化IOS效率20%。
2015年5月13日：開源團隊開啟支援linux ubuntu計畫。  
2015年7月8日：發佈AIR 18.0版本。
2015年9月21日：發佈AIR 19.0版本，增加安全性和增加IOS支援。
2015年11月18日：發佈AIR 20.0（Beta）版本。增加android TV 等跨平台 TV 支援技術研發。
2016年6月16日：發佈AIR 21.0版本。強化視訊和攝影機路線規劃、高畫質處理、效能優化和移動平台相關開發。

語言

語法 
在ActionScript 2.0裡，函式館物件（如影片片段、按鈕）可與類聯繫在一起。類可寫在外在文件檔案內，並且這些文件必須有.as後綴。類是增設部分──對ActionScript語言來說，可讓程式員自行開發，雖然有許多內建類譬如MovieClip類──可被用來動態地在螢幕上畫出向量──已經滿足需求了。類檔案可使編程更加容易，並且類檔案如果需要的話可在許多專案間轉移。

Flash ActionScript實現的特點如下，JavaScript程式員也許感興趣：

 一切設計是非同步的；回调函数是普遍存在的，但事件對象不存在。
 XML的實現從Flash 5便存在了。Flash可送和收XML，該項功能可用來透過網路伺服器創造網上多玩者遊戲。

ActionScript代碼常常直接寫在Flash開發環境。該環境提供參考、代碼提示和句法強調。原代碼常常與電影一起存在.fla檔案裡。自外部文件檔透過#include語法導入ActionScript代碼也相當常見。在這種情況下，外部檔案也許被Flash整合開發環境內建編譯器，或Motion Twin ActionScript2編譯器（MTASC）編譯。

评价

示例

ActionScript 2.0樣本 

下-{面}-列印Hello World。值得注意的是這只能在整合環境下執行，因為trace函式只有支援整合環境。

trace("Hello world!");

下-{面}-代碼利用onMouseMove事件當滑鼠移動時輸出現行滑鼠位置。同樣的這只有在整合環境下執行。

onMouseMove = function () {
   trace("X: "+_root._xmouse);
   trace("Y: "+_root._ymouse);
};

這個較先進的範例創造一個包括數字與字串的陣列，並利用原形函式（prototype function）與函式遞歸給變數名num指定一個數，給變數str指定一個字串。然後，利用MovieClip應用程序介面，文字區域被顯示在屏幕上，文字區域裡頭寫入了變數值。

var my_Array:Array = new Array("Hello", "ActionScript", 3, 7, 11, "Flash");
Array.prototype.pickNumber = function():Number  {
   var rand:Number = random(this.length);
   return (typeof (this[rand]) == "number") ? this[rand] : this.pickNumber();
};
Array.prototype.pickString = function():String  {
   var rand:Number = random(this.length);
   return (typeof (this[rand]) == "string") ? this[rand] : this.pickString();
};
var num:Number = my_Array.pickNumber();
var str:String = my_Array.pickString();
_root.createTextField("txt", 1, 10, 10, 530, 390);
txt.text = "Array = "+my_Array+"\nRandom Number = "+num+"\nRandom String = "+str;

ActionScript 3.0樣本 

下面先進的Hello World程序目前需要在Flex 2.0公開Alpha測試版整合環境中編譯。

package {
   import flash.text.TextField;
   import flash.display.MovieClip;
   import flash.filters.DropShadowFilter;
   public class HelloWorld extends MovieClip {
      public function HelloWorld() {
         var shad:DropShadowFilter = new DropShadowFilter(2, 45, 0x000000, 25, 3, 3, 2, 2);
         var txt:TextField = new TextField();
         txt.textColor = 0xFFFFFF;
         txt.filters = [shad];
         txt.width = 120;
         txt.x = Math.random()*300;
         txt.y = Math.random()*300;
         txt.selectable = false;
         txt.text = "Hello World! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]";
         addChild(txt);
      }
   }
}
//-----ActionScript3.0-----------------
//as3.0最重要的概念就是在效能方面的增進，平時所加入的任何事件都可以被監聽或從記憶體中移除
//以下例子就是監聽與移除記憶體占用，這是as3.0最重要的基礎概念

bt1.addEventListener(MouseEvent.CLICK,bt1_click);

function bt1_click(e:MouseEvent):void{
//觸發的事件內容;
}

//該按紐監聽不需要時則remove掉，增加效能
bt1.removeEventListener(MouseEvent.CLICK,bt1_click);

Starling GPU 開發樣本 
導入 SWC 或相關 SDK 以後，在建構子內加入以下這段，便可啟用 GPU 高速框架開發相關 swf 或是跨平台軟體。

var _starling = new Starling(MainGame, stage);
_starling.start();

參見 
ECMAScript
Lingo for Macromedia Director
Macromedia Flash
Scripting
Macromedia

参考资料

外部連結 

 官方 API
 Macromedia實驗室- Macromedia發展中技術資源站（英）

程序设计语言
脚本语言
基于类的编程语言
1998年建立的程式語言