ActionScript
面向对象的编程语言 来自维基百科,自由的百科全书
面向对象的编程语言 来自维基百科,自由的百科全书
ActionScript是原Macromedia公司(後併入Adobe)為其Flash產品開發的一種基於ECMAScript的物件導向程式語言。ActionScript可用於網頁製作、Adobe Flash動畫和Adobe AIR應用程式的開發。
![]() |
![]() | |
編程範型 | 多重編程範式:基於原型的物件導向程式設計、函數程式語言、指令式編程、手稿語言 |
---|---|
設計者 | Gary Grossman |
實作者 | Adobe Systems |
釋出時間 | 1998年 |
目前版本 |
|
型態系統 | 強型別、靜態型別 |
作業系統 | 跨平台 |
網站 | www |
主要實作產品 | |
Adobe Flash、Adobe Animate、Apache Flex | |
啟發語言 | |
JavaScript、Java |
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檔案。
版本 | 發佈日期 | 描述 |
---|---|---|
Flash Player 2 | 1997/06/17 | 第一個支援指令碼的版本,包括控制時間軸的gotoAndPlay、 gotoAndStop、nextFrame和nextScene等方法。 |
Flash Player 3 | 1998/05/31 | 增強了載入外部SWF檔案的基本指令碼支援(loadMovie)。 |
Flash Player 4 | 1999/06/15 | 第一個完全實現指令碼功能(稱為「動作」)的播放器。這些指令碼擁有簡練的語法和對迴圈、條件、變數和其它基本語言結構的支援。 |
Flash Player 5 | 2000/08/24 | 第一個擁有真正意義上的ActionScript的版本。依據ECMAScript,[1]採用基於原型編程,並允許完全的程序式編程和物件導向程式設計。 |
Flash Player 6 | 2002/03/15 | 增加了事件處理模型,並且支援switch。 |
Flash Player 7 | 2003/09/10 | 提供一些新特性,如支援CSS顯示文字和增強顯示效果。Macromedia Flash編譯器和Flash Player 7同時支援基於ECMAScript 4 Netscape Proposal[2]的類程式語言ActionScript 2.0。不過ActionScript 2.0能交叉編譯成ActionScript 1.0的位元組碼,因此它能執行於Flash Player 6。 |
Flash Player 8 | 2005/09/13 | 增加用於執行時圖象數據控制和檔案上載的新類別館及APIs,ActionScript 2.0功能更為完善。 |
Flash Player 9 | 2006/06/22 | 原稱為Flash Player 8.5,增加ActionScript 3.0和一個稱為AVM2(ActionScript Virtual Machine 2)新的虛擬機器,它可以與前版本AVM1共存以便支援舊內容。增強效能是該版本的主要目標。這是adobe收購Macromedia後的第一個版本,並且也是Mac OS X上第一個Universal版本的Flash Player。 |
Flash Player 10 | 2008/10/15 | 支援多線程。 |
Flash Player 11 | 2011/10/04 | 運用Stage3D API提供的硬件加速圖像彩現,支援GPU加速。[3] |
Flash Player 14 | 2014/06/10 | 支援AGAL2[4] |
Flash Player 17.0.0.93(閱覽版 (Beta)) | 2015/03/12 |
|
Flash Player 18(閱覽版 (Beta)) | 2015/06/09 |
|
Flash Player 19 | 2015/09/21 | |
Flash Player 20 | 2015/12/08 | 增強視像處理和資訊防盜功能 |
Flash Player 21 | 2016/03/10 |
|
Flash Player 22 | 2016/06/16 |
|
在ActionScript 2.0裏,函數館物件(如影片片段、按鈕)可與類聯繫在一起。類可寫在外在文件檔案內,並且這些檔案必須有.as後綴。類是增設部分──對ActionScript語言來說,可讓程式員自行開發,雖然有許多內建類譬如MovieClip類──可被用來動態地在螢幕上畫出向量──已經滿足需求了。類檔案可使編程更加容易,並且類檔案如果需要的話可在許多專案間轉移。
Flash ActionScript實現的特點如下,JavaScript程式員也許感興趣:
ActionScript代碼常常直接寫在Flash開發環境。該環境提供參考、代碼提示和句法強調。原代碼常常與電影一起存在.fla檔案裏。自外部檔案檔透過#include語法匯入ActionScript代碼也相當常見。在這種情況下,外部檔案也許被Flash整合開發環境內建編譯器,或Motion Twin ActionScript2編譯器(MTASC)編譯。
下面列印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;
下面先進的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);
匯入 SWC 或相關 SDK 以後,在建構子內加入以下這段,便可啟用 GPU 高速框架開發相關 swf 或是跨平台軟件。[5][6][7]
var _starling = new Starling(MainGame, stage);
_starling.start();
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.