語法

語言的語法會定義一組規則,在撰寫可執行的程式碼時您必須加以遵守。

區分大小寫

ActionScript 3.0 是區分大小寫的語言。僅有大小寫差異的識別名稱會視為不同的識別名稱。例如,下列程式碼會建立兩個不同的變數:

var num1:int; 
var Num1:int;

點語法

點運算子 ( . ) 可用來存取物件的屬性和方法。使用點語法時,您可以使用實體名稱參考類別屬性或方法,作法是在實體名稱後面接一個點 (.) 運算子,再加上屬性或方法的名稱。例如,請考慮下列類別定義:

class DotExample 
{ 
    public var prop1:String; 
    public function method1():void {} 
}

使用點語法時,您可以使用下列程式碼建立的實體名稱,存取 prop1 屬性和 method1() 方法。

var myDotEx:DotExample = new DotExample(); 
myDotEx.prop1 = "hello"; 
myDotEx.method1();

定義套件時,您可以使用點語法。您可以使用點運算子來參考巢狀套件。例如,EventDispatcher 類別位於名為 events 的套件中,而該套件又以巢狀方式位於名為 flash 的套件中。您可以使用下列運算式,參考 events 套件:

flash.events

您也可以使用此運算式,參考 EventDispatcher 類別:

flash.events.EventDispatcher

斜線語法

ActionScript 3.0 不支援斜線語法。舊版的 ActionScript 會使用斜線語法,表示影片片段或變數的路徑。

常值

「常值」是直接在程式碼中出現的值。下列範例全部都是常值:

17 
"hello" 
-3 
9.4 
null 
undefined 
true 
false

您可以將多個常值組成複合常值。陣列常值要用方括號字元 ( [] ) 括住,並使用逗號來分隔陣列元素。

陣列常值可以用來初始化陣列。下列範例顯示兩個使用陣列常值來初始化的陣列。您可以使用 new 陳述式,並傳遞複合常值做為 Array 類別建構函式的參數,但是,您也可以在實體化下列 ActionScript 核心類別的實體時,直接指定常值:Object、Array、String、Number、int、uint、XML、XMLList 和 Boolean。

// Use new statement. 
var myStrings:Array = new Array(["alpha", "beta", "gamma"]); 
var myNums:Array = new Array([1,2,3,5,8]); 
 
// Assign literal directly. 
var myStrings:Array = ["alpha", "beta", "gamma"]; 
var myNums:Array = [1,2,3,5,8];

常值也可以用來初始化一般物件。一般物件是 Object 類別的實體。物件常值要用大括號 ( {} ) 括住,並使用逗號來分隔物件屬性。每個屬性都是使用冒號字元 ( : ) 加以宣告,冒號會分隔屬性名稱與屬性值。

您可以使用 new 陳述式來建立一般物件,然後將物件常值當做參數傳遞給 Object 類別建構函式;或者,也可以將物件常值直接指定給您所宣告的實體。下列範例示範建立新的一般物件,並將具有三個屬性 ( propA propB propC ) 的物件初始化,再分別將其值設定為 1、2 和 3 的兩個替代方式。

// Use new statement and add properties. 
var myObject:Object = new Object(); 
myObject.propA = 1; 
myObject.propB = 2; 
myObject.propC = 3; 
 
// Assign literal directly. 
var myObject:Object = {propA:1, propB:2, propC:3};

分號

您可以使用分號字元 ( ; ) 終止陳述式。或者,您也可以省略分號字元,編譯器會假設每一行程式碼代表一個陳述式。由於許多程式設計人員習慣使用分號來代表陳述式的結束,因此如果一致地使用分號來終止陳述式,您的程式碼可能會更易於閱讀。

使用分號來終止陳述式可讓您在同一行放置一個以上的陳述式,但這樣做可能會讓程式碼難以閱讀。

括號

在 ActionScript 3.0 中,括號 ( () ) 有三種使用方式。第一,您可以使用括號來變更運算式中的作業順序。組合在括號之中的作業永遠都會先執行。例如,在下列程式碼中,會使用括號來改變作業的順序:

trace(2 + 3 * 4); // 14 
trace((2 + 3) * 4); // 20

第二,您可以搭配括號使用逗號 ( , ) 運算子,以評估一系列運算式,並傳回最終運算式的結果,如下列範例所示:

var a:int = 2; 
var b:int = 3; 
trace((a++, b++, a+b)); // 7

第三,您可以使用括號來傳遞一個或多個參數給函數或方法,如下列範例所示,它會傳遞 String 值給 trace() 函數:

trace("hello"); // hello

註解

ActionScript 3.0 程式碼支援兩種類型的註解:單行註解和多行註解。這些註解機制類似於 C++ 和 Java 中的註解機制。編譯器會忽略標示為註解的文字。

單行註解是以兩個正斜線字元 ( // ) 開頭,然後繼續直到該行結束。例如,下列程式碼包含單行註解:

var someNumber:Number = 3; // a single line comment

多行註解是以一個正斜線字元和星號 ( /* ) 開頭,然後以星號和正斜線 ( */ ) 結尾。

/* This is multiline comment that can span 
more than one line of code. */

關鍵字與保留字

「保留字」是不可以在程式碼中用來當做識別名稱的字詞,因為這些字詞是保留給 ActionScript 使用的。保留字包括「語彙關鍵字」,是由編譯器從程式命名空間中移除。若使用語彙關鍵字做為識別名稱,則編譯器會報告錯誤。下表列出 ActionScript 3.0 語彙關鍵字。

as

break

case

catch

class

const

continue

default

delete

do

else

extends

False

finally

for

function

if

implements

import

in

instanceof

interface

internal

is

native

new

null

package

private

protected

public

return

super

switch

this

throw

to

true

try

typeof

use

var

void

while

with

有一小組關鍵字稱為「語法關鍵字」,可用來做為識別名稱,但在某些內容中會有特殊的意義。下表列出 ActionScript 3.0 語法關鍵字。

each

get

set

namespace

include

dynamic

final

native

override

static

也有一些識別名稱有時稱為「未來保留字」。雖然與 ActionScript 3.0 結合的軟體可能將其中部分識別名稱視為關鍵字,但是,ActionScript 3.0 並未保留這些識別名稱。雖然您可以在程式碼中任意使用這些識別名稱,不過 Adobe 建議您不要使用這些識別名稱,因為在後續的語言版本中,它們可能是關鍵字。

abstract

boolean

byte

cast

char

debugger

double

enum

export

float

goto

intrinsic

long

prototype

short

synchronized

throws

to

transient

type

virtual

volatile

常數

ActionScript 3.0 支援 const 陳述式,讓您可以用來建立常數。常數是有無法改變之固定值的屬性。您只能將值指定給常數一次,指定作業必須在非常接近常數宣告時發生。例如,如果常數是宣告為類別的成員,您只能將值指定給該常數做為宣告的一部分,或是在類別建構函式中指定值。

下列程式碼會宣告兩個常數:第一個常數是 MINIMUM ,具有指定做為宣告陳述式之一部分的值;第二個常數是 MAXIMUM ,具有在建構函式中指定的值。請注意,此範例僅能在標準模式下編譯,因為嚴謹模式僅允許在初始化階段指定常數的值。

class A 
{ 
    public const MINIMUM:int = 0; 
    public const MAXIMUM:int; 
 
    public function A() 
    { 
        MAXIMUM = 10; 
    } 
} 
 
var a:A = new A(); 
trace(a.MINIMUM); // 0 
trace(a.MAXIMUM); // 10

若嘗試以其它方式將初始值指定給常數,就會發生錯誤。例如,若嘗試在類別之外設定 MAXIMUM 的初始值,就會發生執行階段錯誤。

class A 
{ 
public const MINIMUM:int = 0; 
public const MAXIMUM:int; 
} 
 
var a:A = new A(); 
a["MAXIMUM"] = 10; // run-time error

ActionScript 3.0 會定義廣泛的常數範圍供您使用。按照慣例,ActionScript 中的常數全都是大寫字母,並以底線字元 ( _ ) 來分隔單字。例如,MouseEvent 類別定義會使用這種命名慣例為其常數命名,每個都代表與滑鼠輸入相關的事件:

package flash.events 
{ 
    public class MouseEvent extends Event 
    { 
    public static const CLICK:String = "click"; 
    public static const DOUBLE_CLICK:String = "doubleClick"; 
    public static const MOUSE_DOWN:String = "mouseDown"; 
    public static const MOUSE_MOVE:String = "mouseMove"; 
    ... 
    } 
}