Flash CS3 文件 |
|||
| ActionScript 3.0 程式設計 > ActionScript 語言和語法 > 語法 | |||
語言的語法會定義一組規則,在撰寫可執行的程式碼時您必須加以遵守。
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 的套件中,而該套件又以巢狀方式位於名為 events 的套件中。您可以使用下列運算式,參考 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。
// 使用 new 陳述式。 var myStrings:Array = new Array(["alpha", "beta", "gamma"]); var myNums:Array = new Array([1,2,3,5,8]); // 直接指定常值。 var myStrings:Array = ["alpha", "beta", "gamma"]; var myNums:Array = [1,2,3,5,8];
常值也可以用來初始化一般物件。一般物件是 Object 類別的實體。物件常值要用大括號 ({}) 括住,並使用逗號來分隔物件屬性。每個屬性都是使用冒號字元 (:) 加以宣告,冒號會分隔屬性名稱與屬性值。
您可以使用 new 陳述式來建立一般物件,然後將物件常值當做參數傳遞給 Object 類別建構函式;或者,也可以將物件常值直接指定給您所宣告的實體。下列範例建立新的一般物件,並將具有三個屬性 (propA、propB 和 propC) 的物件初始化,再分別將其值設定為 1、2 和 3。
// 使用 new 陳述式。
var myObject:Object = new Object({propA:1, propB:2, propC:3});
// 直接指定常值。
var myObject:Object = {propA:1, propB:2, propC:3};
如需詳細資訊,請參閱字串的基本觀念、規則運算式基本課程和初始化 XML 變數。
您可以使用分號字元 (;) 以終止陳述式。或者,您也可以省略分號字元,編譯器將會假設每一行程式碼代表一個陳述式。由於許多程式設計人員慣於使用分號來代表陳述式的結束,因此如果一律都使用分號來終止陳述式,則您的程式碼可能會更易於閱讀。
使用分號來終止陳述式,可讓您在同一行放置一個以上的陳述式,但這樣做可能會讓程式碼難以閱讀。
在 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; // 單行註解
多行註解是以一個正斜線字元和星號 (/*) 開頭,然後以星號和正斜線 (*/) 結尾。
/* 這是多行註解,可跨 一行以上的程式碼。 */
「保留字」是不可以在程式碼中用來當做識別名稱的字詞,因為這些字詞是保留給 ActionScript 使用的。保留字包括「語彙關鍵字」,是由編譯器從程式命名空間中移除。若使用語彙關鍵字做為識別名稱,則編譯器將會報告錯誤。下表列出 ActionScript 3.0 語彙關鍵字。
|
as |
break |
case |
catch |
|
類別 |
const |
continue |
default |
|
delete |
do |
else |
extends |
|
false |
finally |
for |
function |
|
if |
implements |
import |
in |
|
instanceof |
interface |
internal |
is |
|
native |
new |
null |
套件 |
|
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; // 執行階段錯誤
Flash Player API 會定義廣泛的常數範圍供您使用。按照慣例,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";...}}
Flash CS3
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000049.html