语法

语言的语法定义了一组在编写可执行代码时必须遵循的规则。

区分大小写

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 类构造函数,也可以在声明实例时直接将对象字面值赋给实例。下面的示例演示两个替代方法,用于创建一个新的通用对象,并使用三个值分别设置为 1、2 和 3 的属性(propApropBpropC)初始化该对象:

// 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

第三,可以使用小括号来向函数或方法传递一个或多个参数,如下面的示例所示,此示例向 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"; 
    ... 
    } 
}