AS

動作腳本(actionscript)

ActionScript(簡稱AS)是由Macromedia(現已被Adobe收購)為其Flash產品開發的,最初是一種簡單的腳本語言徠,現在最新版本ActionScript3.0,是一種完全的面向對象的編程語言,功能強大,類庫豐富,語法類似JavaScript,多用於Flash互動性、娛樂性、實用性開發,網頁製作和RIA(豐富網際網路程序)開發。

定義


ActionScript開發工具
ActionScript開發工具
運用在flash上的腳本語言。

使用


ActionScript 動作腳本是遵循ECMAscript第四版 的Adobe Flash Player運行時環境的編程語言。它在 Flash 內容和應用程序中實現交互性、數據處理、以及其他功能。
* ActionScript 是由 Flash Player 地方gtr和中的 ActionScript虛擬機(AVM)來執行。
* ActionScript代碼通常被編譯成“位元組碼格式”。
* ActionScript 的主要 IDE(集成開發環境)是Adobe公司的 Flash Builder,最新版本 4.7。
* ActionScript CS3(2007)後為更新為ActionScript 3.0,語言的系統結構完全改變,支持即時編譯,語言功能增強速度。

發展


從macromedia大刀闊斧對As1.0進行改革到AS2.0,這一段過程看上去還算長一些,從flashmx到flash mx2004到flash 7.2再到flash8. 它們的核心actionscript都是as2.0.在flash8剛剛發布不長時間,macromedia又緊羅密鼓的推出了flash9預覽版,Adobe發布的預覽版可以對AS3.0進行編譯,而As3.0經過測試它的速度可以說要比之前的as2.0快10倍.拿著as3.0與As2.0相對比,它看上去就象是重寫的一種新語言一樣.還有隨之推出的adobe的Flex 2.0 builder. Flex sdk.讓許多人一時不知所措。
·Flash Player2:第一個支持腳本的版本,包括控制時間軸的gotoAndPlay, gotoAndStop, nextFrame和nextScene等動作。
· Flash Player 3:增強了載入外部SWF文件的基本腳本支持(loadMovie)。
· Flash Player 4:第一個完全實現腳本功能(稱為動作)的播放器。這些腳本擁有簡練的語法和對循環,條件,變數和其它基本語言結構的支持。
· Flash Player 5:第一個擁有真正意義上的ActionScript的版本。依據ECMAScript並採用基於原型編程,並允許完全的 過程序編程和面向對象編程。
· Flash Player 6:增加了事件處理模型,並且支持switch。
· Flash Player 7:Flash Player 7 提供一些新特性如支持CSS顯示文本和增強顯示效果。Macromedia Flash編譯器和Flash Player 7同時支持基於ECMAScript 4 Netscape Proposal的類編程語言ActionScript 2.0。不過ActionScript 2.0能交叉編譯成ActionScript 1.0的位元組碼,因此它能運行於Flash Player 6。
· Flash Player 8:增加用於運行時圖象數據控制和文件上傳的新類庫及APIs,ActionScript 2.0功能更為完善。
· Flash Player 8.5(計劃於2006春發布release版本,currently in public beta):增加ActionScript 3.0和一個稱為AVM2(ActionScript Virtual Machine 2)新的虛擬機,它可以與前版本AVM1共存以便支持舊內容。增強性能是該版本的主要目標。
· Flash Player 9 2007發表,這是adobe收購Macromedia后的第一個版本,並且也是Mac OS X上第一個Universal版本的Flash Player
· Flash Player 10
基本記法
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);

相關術語


1.Actions (動作):就是程序語句,它是actionscript腳本語言的靈魂和核心.
2.Events (事件):簡單的說,要執行某一個動作,必須提供一定的條件,如需要某一個事件對該動作進行的一種觸發,那麼這個觸發功能的部分就是actionscript中的事件.
3.Class (類):是一系列相互之間有聯繫的數據的集合,用來定義新的對象類型.
4.Constructor (構造器):用於定義類的屬性和方法的函數.
5.Expressions (表達式):語句中能夠產生一個值的任一部分.
6.Function.(函數):指可以被傳送參數並能返回值的以及可重複使用的代碼塊.
7.Identifiers (標示符):用於識別某個變數,屬性,對象,函數或方法的名稱.
8.Instances (實例):實例是屬於某個類的對象,一個類的每一個實例都包含類的所有屬性和方法.
9.Variable (變數):變數是儲存任意數據類型的值的標示符.
10. Instancenames (實例名):是在腳本中指向影片剪輯實例的唯一名字.
11.Methods (方法):是指被指派給某一個對象的函數,一個函數被分配后,它可以作為這個對象的方法被調用.
12.Objects (對象):就是屬性的集合。每個對象都有自己的名字和值,通過對象可以自由訪問某一個類型的信息.
13.Property (特性):對象具有的獨特屬性.
Flash使用ActionScript給動畫添加交互性。在簡單動畫中,Flash按順序播放動畫中的場景和幀,而在交互動畫中,用戶可以使用鍵盤或滑鼠與動畫交互。例如,可以單擊動畫中的按鈕,然後跳轉到動畫的不同部分繼續播放;可以移動動畫中的對象;可以在表單中輸入信息等等。使用ActionScript可以控制Flash動畫中的對象,創建導航元素和交互元素,擴展Flash創作交互動畫和網路應用的能力。