符号运算符是指定如何组合、比较或修改表达式值的字符。


  算术
 +addition加上数字表达式。
 --decrement操作数减去 1。
 /divisionexpression1 除以 expression2
 ++increment将表达式加 1。
 %modulo计算 expression1除以 expression2 的余数。
 *multiplication将两个数值表达式相乘。
 -subtraction用于执行求反或减法运算。
  算术组合赋值
 +=addition assignmentexpression1 + expression2 的值赋给 expression1
 /=division assignmentexpression1 / expression2 的值赋给 expression1
 %=modulo assignmentexpression1 % expression2 的值赋给 expression1
 *=multiplication assignmentexpression1 * expression2 的值赋给 expression1
 -=subtraction assignmentexpression1 - expression2 的值赋给 expression1
  赋值
 =assignmentexpression2(右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。
  按位
 &bitwise ANDexpression1expression2 转换为 32 位无符号整数,并对整数参数的每一位执行布尔 AND 运算。
 <<bitwise left shiftexpression1shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动由 shiftCount 转换所得到的整数指定的位数。
 ~bitwise NOTexpression 转换为一个 32 位带符号整数,然后按位对 1 求补。
 |bitwise ORexpression1expression2 转换为 32 位无符号整数,并在 expression1expression2 的对应位为 1 的每位处放置 1。
 >>bitwise right shiftexpressionshiftCount 转换为 32 位整数,并将 expression 中的所有位向右移动由 shiftCount 转换所得到的整数指定的位数。
 >>>bitwise unsigned right shift此运算符与按位向右移位运算符 (>>) 基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。
 ^bitwise XORexpression1expression2 转换为 32 位无符号整数,并在 expression1expression2 中对应位为 1(但不是在两者中均为 1)的每个位的位置上放置 1。
  按位组合赋值
 &=bitwise AND assignmentexpression1 赋予 expression1 & expression2 的值。
 <<=bitwise left shift and assignment执行按位向左移位 (<<=) 运算,并将内容作为结果存储在 expression1 中。
 |=bitwise OR assignmentexpression1 | expression2 的值赋给 expression1
 >>=bitwise right shift and assignment执行按位向右移位运算,并将结果存储在 expression 中。
 >>>=bitwise unsigned right shift and assignment执行无符号按位向右移位运算,并将结果存储在 expression 中。
 ^=bitwise XOR assignmentexpression1 ^ expression2 的值赋给 expression1
  注释
 /*..*/block comment delimiter分隔一行或多行脚本注释。
 //line comment delimiter指示脚本注释的开始。
  比较
 ==equality测试两个表达式是否相等。
 >greater than比较两个表达式,并确定 expression1 是否大于 expression2;如果是,则结果为 true
 >=greater than or equal to比较两个表达式,确定 expression1 是大于或等于 expression2 (true) 还是 expression1 小于 expression2 (false)。
 !=inequality测试结果是否与等于运算符 (==) 正好相反。
 <less than比较两个表达式,并确定 expression1 是否小于 expression2;如果是,则结果为 true
 <=less than or equal to比较两个表达式,并确定 expression1 是否小于等于 expression2;如果是,则结果为 true
 ===strict equality测试两个表达式是否相等,但不执行自动数据转换。
 !==strict inequality测试结果与全等运算符 (===) 正好相反。
  逻辑
 &&logical AND如果 expression1false 或可以转换为 false,则返回该表达式;否则,返回 expression2
 !logical NOT对变量或表达式的布尔值取反。
 ||logical OR如果 expression1true 或可以转换为 true,则返回该表达式;否则,返回 expression2
  其它
 []array access用指定的元素(a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。
  as计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。
 ,comma计算 expression1,然后计算 expression2,依此类推。
 ?:conditional计算 expression1,如果 expression1 的值为 true,则结果为 expression2 的值;否则,结果为 expression3 的值。
  delete破坏由 reference 指定的对象属性;如果在运算完成后该属性不存在,则结果为 true;否则,结果为 false
 .dot访问类变量和方法,获取并设置对象属性并分隔导入的包或类。
  in计算属性是否为特定对象的一部分。
  instanceof计算表达式的原型链是否包括 function 的原型对象。
  is计算对象是否与特定数据类型、类或接口兼容。
 ::name qualifier标识属性、方法或 XML 属性或特性的命名空间。
  new对类实例进行实例化。
 {}object initializer创建一个新对象,并用指定的 namevalue 属性对初始化该对象。
 ()parentheses对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括号前面的函数。
 /RegExp delimiter如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (RegExp),而不是一个变量、字符串或其它 ActionScript 元素。
 :type用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。
  typeof计算 expression 并返回一个指定表达式的数据类型的字符串。
  void计算表达式,然后放弃其值,返回 undefined
  字符串
 +concatenation连接(合并)字符串。
 +=concatenation assignmentexpression1 + expression2 的值赋给 expression1
 "string delimiter如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其它 ActionScript 元素。
  XML
 @attribute identifier标识 XML 或 XMLList 对象的属性。
 { }braces (XML)计算在 XML 或 XMLList 初始值设定项中使用的表达式。
 [ ]brackets (XML)访问 XML 或 XMLList 对象的属性或特性。
 +concatenation (XMLList)将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。
 +=concatenation assignment (XMLList)对 XMLList 对象 expression1 赋予 expression1 + expression2 的值。
  delete (XML)删除由 reference 指定的 XML 元素或属性。
 ..descendant accessor定位到 XML 或 XMLList 对象的后代元素,或(结合使用 @ 运算符)查找匹配的后代属性。
 .dot (XML)定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。
 ( )parentheses (XML)计算 E4X XML 构造中的表达式。
 < >XML literal tag delimiter在 XML 文本中定义 XML 标签。
运算符详细信息
+ addition 运算符
用法
expression1 + expression2

加上数字表达式。两个表达式都为整数时,和为整数;其中一个或两个表达式为浮点数时,和为浮点数。

如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来,而不是进行求和。否则,如果表达式不是数字,Flash® Player 会将其转换为数字。

操作数
expression1:Number — 要加上的值。
expression2:Number — 要加上的值。

结果
Number — 一个整数或浮点数。

示例
如何使用示例
下面的语句将整数 2 和 3 相加:
trace(2 + 3); // 5
下面的语句将浮点数 2.5 与 3.25 相加:
trace(2.5 + 3.25); // 5.75
下例说明如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来:
trace("Number " + 8 + 0); // Number 80
与动态和输入文本字段相关联的变量是字符串数据类型。在以下示例中,变量 deposit 是舞台上的一个输入文本字段。在用户输入存款数目后,该脚本尝试将 deposit 添加到 oldBalance。然而,由于 deposit 的类型是 String,因此脚本连接(合并成一个字符串)变量的值,而不是对它们求和。
var oldBalance:Number = 1345.23; 
var currentBalance = deposit_txt.text + oldBalance; 
trace(currentBalance); 
例如,如果用户在 deposit 文本字段中输入 475,则 trace() 语句将值 4751345.23 发送到撌涑觥泵姘濉若要更正这一点,请使用 Number() 函数将字符串转换为数字,如下所示:
var oldBalance:Number = 1345.23; 
var currentBalance:Number = Number(deposit_txt.text) + oldBalance;
trace(currentBalance);

另请参见

+= addition assignment 运算符  
用法
expression1 += expression2

expression1 + expression2 的值赋给 expression1。例如,以下两个语句的结果是相同的:

x += y; 
x = x + y;
加法运算符 (+) 的所有规则适用于加法赋值运算符 (+=)。

操作数
expression1:Number — 一个数字。
expression2:Number — 一个数字。

结果
Number — 加法运算的结果。

示例
如何使用示例
下例说明加法赋值运算符 (+=) 的数值用法:
var x:Number = 5; 
var y:Number = 10; 
x += y; 
trace(x); // 15 

另请参见

[] array access 运算符  
用法
myArray = [a0, a1,...aN]
myArray[i] = value 
myObject[propertyName]

运行时版本: Flash Player 9

用指定的元素(a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。数组访问运算符使您能够动态地设置和检索实例、变量和对象的名称。它还使您能够访问对象属性。

用法 1:数组是一个对象,其属性称为元素,这些元素由名为索引的数字逐一标识。创建数组时,需用数组访问 ([]) 运算符(即方括号)括住元素。一个数组可以包含各种类型的元素。例如,下面这个名为 employee 的数组包含三个元素;第一个元素是一个数字,另外两个元素是字符串(在引号内):

var employee:Array = [15, "Barbara", "Jay"]; 
可以通过嵌套方括号来模拟多维数组。您最多可以嵌套深度为 256 级的数组。以下代码创建一个名为 ticTacToe 且含有三个元素的数组;其中每个元素也是一个具有三个元素的数组:
var ticTacToe:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; 
			
/* Select Debug > List Variables in test mode 
to see a list of the array elements.*/ 
用法 2:用方括号 ([]) 括住每个元素的索引可直接对其进行访问;这样可以向数组添加新元素以及更改或检索现有元素的值。数组中第一个索引始终是 0,如下例所示:
var my_array:Array = new Array(); 
my_array[0] = 15; 
my_array[1] = "Hello"; 
my_array[2] = true; 
可以使用方括号来添加第四个元素,如下例所示:
my_array[3] = "George"; 
可以使用方括号访问多维数组中的元素。第一对括号标识原始数组中的元素,第二对括号标识嵌套数组中的元素。下面的 trace() 语句查找第二个数组(索引 1)的第三个元素(索引 2)。
var ticTacToe:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; 
trace(ticTacToe[1][2]); // 6 
用法 3:可以使用数组访问运算符来动态设置和检索对象的属性值:
var obj:Object = new Object();
obj.prop1 = "foo";
trace(obj["prop" + 1]); // foo
obj.prop2 = "bar";
for (j in obj) {
	trace(obj[j]);
} 
/* Output of for loop: 
foo
bar */

操作数
myArray:Object — 数组的名称。
a0, a1,...aN:Object — 数组中的元素;任何本机类型或对象实例,包括嵌套的数组。
i:Number — 大于等于 0 的整数索引。
myObject:Object — 对象的名称。
propertyName:String — 为对象的属性命名的字符串。

结果
Object

用法 1:对一个数组的引用。

用法 2:数组中的一个值;本机类型或对象实例(包括数组实例)。

用法 3:对象的一个属性;本机类型或对象实例(包括数组实例)。


示例
如何使用示例
下例说明创建新的空 Array 对象的两种方法;第一行使用方括号:
var my_array:Array = []; 
var my_array:Array = new Array(); 

下例创建一个名为 employee_array 且含有三个元素的数组,并更改该数组中的第三个元素。

var employee_array = ["Barbara", "George", "Mary"]; 
trace(employee_array); // Barbara,George,Mary 
employee_array[2] = "Sam"; 
trace(employee_array); // Barbara,George,Sam 
在下例中,计算括号中的表达式,并将结果用作要从 obj 对象中检索的变量的名称:
var obj:Object = new Object();
obj.prop1 = "foo";
obj.prop2 = "bar";

for (var i:int = 1;i < 3;i++) {
    trace(obj["prop"+i]);
}
/* Output of for loop:
foo
bar */ 

另请参见

as 运算符  
用法
expression as datatype

计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。如果第一个操作数是该数据类型的成员,则结果为第一个操作数。否则,结果为 null 值。

第二个操作数所用表达式的计算结果必须为数据类型。

操作数
expression:* — 要针对指定的数据类型进行检查的值。
datatype:Class — 用于计算 expression 操作数的数据类型。不能使用特殊的 * 类(即无类型)。

结果
Object — 如果 expression 是在 datatype 中指定的数据类型的成员,则结果为 expression。否则,结果为 null 值。

示例
如何使用示例
下例创建一个名为 myArray 的简单数组,并将 as 运算符用于各种数据类型。
public var myArray:Array = ["one", "two", "three"];
trace(myArray as Array);  // one,two,three
trace(myArray as Number); // null
trace(myArray as int);    // null

另请参见

= assignment 运算符  
用法
expression1 = expression2

expression2(右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。可以按值也可以按引用进行赋值。按值进行赋值将复制 expression1 的实际值并将其存储在 expression2 中。当 expression2 是原始值时(这意味着它的数据类型为 Boolean、Number、int、uint 或 String),使用按值进行赋值。按引用进行赋值将把对 expression2 的引用存储在 expression1 中。按引用进行赋值通常与 new 运算符一起使用。new 运算符将在内存中创建一个对象,并将对内存中该位置的引用分配给一个变量。

注意:在 ActionScript 3.0 中,所有的值(包括原始值)都是对象,所有的赋值都通过引用来完成,但是原始对象具有一些特殊运算符,这些运算符使它们如同进行了按值赋值。

操作数
expression1:* — 变量、数组元素或对象的属性。
expression2:* — 任何类型的值。

结果
Object — 赋予的值 expression2

示例
如何使用示例
下面的示例使用按值进行赋值,将值 5 赋予变量 z
var z:Number = 5;
下面的示例使用按值进行赋值,将值“hello”赋予变量 z
var x:String;
x = "hello";
下例使用按引用赋值,以创建 moonsOfJupiter 变量,该变量包含对新创建的 Array 对象的引用。然后使用按值进行赋值,将值“Callisto”复制到变量 moonsOfJupiter 所引用的数组的第一个元素:
var moonsOfJupiter:Array = new Array();
moonsOfJupiter[0] = "Callisto";
下例使用按引用进行赋值来创建一个新对象,并将对该对象的引用赋予变量 mercury。然后使用按值进行赋值,将值 3030 赋予 mercury 对象的 diameter 属性:
var mercury:Object = new Object();
mercury.diameter = 3030; // in miles
trace(mercury.diameter); // 3030
下例在上一示例的基础上创建名为 merkurmercury 在德语中的对应词)的变量,并对它赋予 mercury 的值。这样,就创建了引用内存中同一对象的两个变量,也就是说您可以使用任一变量访问该对象的属性。然后可以更改 diameter 属性以使用千米而不是英里:
var merkur:Object = mercury;
merkur.diameter = 4878;  // in kilometers
trace(mercury.diameter); // 4878

另请参见

@ attribute identifier 运算符  
用法
 myXML.@attributeName 

标识 XML 或 XMLList 对象的属性。例如,myXML.@id 标识 myXML XML 对象的名为 id 的属性。还可以使用以下语法访问属性:myXML.attribute("id")myXML["@id"]myXML.@["id"]。建议使用 myXML.@id 语法。若要返回所有属性名的 XMLList 对象,请使用 @*。若要返回名称与 ActionScript 保留字相匹配的属性,请使用 attribute() 方法,而不要使用 @ 运算符。

操作数
attributeName:* — 属性的名称。

示例
如何使用示例
第一个示例说明如何使用 @(at 符号)运算符来标识元素的属性:
var myXML:XML = 
    <item id = "42">
        <catalogName>Presta tube</catalogName>
        <price>3.99</price>
    </item>;

trace(myXML.@id); // 42
下一个示例返回所有的属性名:
var xml:XML =<example id='123' color='blue'/>
 var xml2:XMLList = xml.@*;
 trace(xml2 is XMLList); // true
 trace(xml2.length());  // 2
 for (var i:int = 0; i < xml2.length(); i++)
 { 
    trace(typeof(xml2[i]));    // xml
    trace(xml2[i].nodeKind()); // attribute
    trace(xml2[i].name());     // id and color
 } 
下一个示例返回名称与 ActionScript 中的保留字相匹配的属性。不能使用 xml.@class 语法(因为 class 是 ActionScript 中的保留字)。需要使用 xml.attribute("class") 语法:
var xml:XML = <example class='123'/>
trace(xml.attribute("class"));

另请参见

& bitwise AND 运算符  
用法
expression1 & expression2

expression1expression2 转换为 32 位无符号整数,并对整数参数的每一位执行布尔 AND 运算。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。

正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
int — 按位运算的结果。

示例
如何使用示例
下例通过比较数字的位表示形式来针对 13(二进制的 1101) 和 11(二进制的 1011)执行按位 AND 运算。所得到的整数由一系列位组成,只有当位于同一位置的操作数的位都是 1 时,所得到整数中的每一位才设置为 1。
var insert:Number = 13; 
var update:Number = 11; 
trace(insert & update); // 9 (or 1001 binary) 
对 13(二进制的 1101)11(二进制的 1011)执行按位 AND 的结果是 9,因为这两个数字中只有第一个和最后一个位置具有数字 1。
  1101
& 1011
  ----
  1001

下例说明返回值转换的行为:

trace(0xFFFFFFFF); // 4294967295 
trace(0xFFFFFFFF & 0xFFFFFFFF); // -1 
trace(0xFFFFFFFF & -1); // -1 
trace(4294967295 & -1); // -1 
trace(4294967295 & 4294967295); // -1 

另请参见

&= bitwise AND assignment 运算符  
用法
expression1 &= expression2

expression1 赋予 expression1 & expression2 的值。例如,以下两个表达式是等效的:

x &= y; 
x = x & y; 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
intexpression1 & expression2 的值。

示例
如何使用示例
下例将值 9 赋予 x
var x:Number = 15; 
var y:Number = 9; 
trace(x &= y); // 9 

另请参见

<< bitwise left shift 运算符  
用法
expression1 << shiftCount

expression1shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动由 shiftCount 转换所得到的整数指定的位数。因执行此运算而空出的位的位置将用 0 填充,移出左端的位将被舍去。将一个值向左侧移动一位与这个值乘以 2 等效。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

如果结果是负整数,那么,当您试图将结果赋予类型为 uint 的变量时,会出现运行时错误。尽管 ActionScript 没有“按位向左移位”运算符,但您可以使用 uint(expression1 << shiftCount) 来获得同样的效果并避免出现运行时错误:

var num1:uint = 0xFF;
var num2:uint = uint(num1 << 24); // uint() prevents runtime error

操作数
expression1:Number — 要向左移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用示例
在下例中,整数 1 向左移 10 位:
x = 1 << 10
按位左移位运算的结果是 1024。这是因为十进制的 1 等于二进制的 1,二进制的 1 向左移 10 位是二进制的 10000000000,而二进制的 10000000000 就是十进制的 1024:
二进制的 00000000001 
<<                                10 decimal
--------------
二进制的 10000000000 等于十进制的 1024 

在下例中,整数 7 向左移 8 位:

x = 7 << 8
按位左移位运算的结果是 1792。这是因为十进制的 7 等于二进制的 111,二进制的 111 向左移 8 位是二进制的 11100000000,而二进制的 11100000000 就是十进制的 1792:
二进制的 00000000111 
<<                                8 decimal
--------------
二进制的 11100000000 等于十进制的 1792 

下面的 trace 语句说明已经将位向左移三位:

// 1 binary == 0001 
// 8 binary == 1000 
trace(1 << 3); // 8 

另请参见

<<= bitwise left shift and assignment 运算符  
用法
expression1 <<= expression2

执行按位向左移位 (<<=) 运算,并将内容作为结果存储在 expression1 中。下面的两个表达式是等效的:

A <<= B
A = (A << B)

操作数
expression1:Number — 要向左移位的数字或表达式。
expression2:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用示例
在下例中,使用按位向左移位并赋值运算符 (<<=) 将所有位向左移一位:
var x:Number = 4; 
// Shift all bits one slot to the left. 
x <<= 1; 
trace(x); // 8 
// 4 decimal = 0100 binary 
// 8 decimal = 1000 binary 

另请参见

~ bitwise NOT 运算符  
用法
~expression

expression 转换为一个 32 位带符号整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。此运算符也称为对一求补运算符或按位求补运算符。

例如,十六进制值 0x7777 表示为二进制数:

0111011101110111

该十六进制值 ~0x7777 的按位取反的二进制数为:

1000100010001000

在十六进制中,它是 0x8888。因此,~0x7777 就是 0x8888。

按位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression:Number — 要转换的数字。

结果
int — 按位运算的结果。

示例
如何使用示例
下例说明如何将按位 NOT (~) 运算符与特征位结合使用:
var ReadOnlyFlag:int = 0x0001; // defines bit 0 as the read-only flag 
var flags:int = 0; 
trace(flags); 
/* To set the read-only flag in the flags variable, 
   the following code uses the bitwise OR: 
*/
flags |= ReadOnlyFlag; 
trace(flags); 
/* To clear the read-only flag in the flags variable, 
   first construct a mask by using bitwise NOT on ReadOnlyFlag. 
   In the mask, every bit is a 1 except for the read-only flag. 
   Then, use bitwise AND with the mask to clear the read-only flag. 
   The following code constructs the mask and performs the bitwise AND: 
*/ 
flags &= ~ReadOnlyFlag; 
trace(flags); 
// 0 1 0 

另请参见

| bitwise OR 运算符  
用法
expression1 | expression2

expression1expression2 转换为 32 位无符号整数,并在 expression1expression2 的对应位为 1 的每个位的位置上放置 1。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression1:Number — 一个数字。
expression2:Number — 一个数字。

结果
int — 按位运算的结果。

示例
如何使用示例
下面是一个按位 OR (|) 运算的示例:
// 15 decimal = 1111 binary 
var a:Number = 15; 
// 9 decimal = 1001 binary 
var b:Number = 9; 
// 1111 | 1001 = 1111 
trace(a | b); // returns 15 decimal (1111 binary) 
请勿将单个 |(按位 OR)与 ||(逻辑 OR)混淆。

另请参见

|= bitwise OR assignment 运算符  
用法
expression1 |= expression2

expression1 | expression2 的值赋给 expression1。例如,下面两个语句是等效的:

x |= y; 
x = x | y; 

操作数
expression1:Number — 要转换的数字。
expression2:Number — 要转换的数字。

结果
int — 按位运算的结果。

示例
如何使用示例
下例使用按位 OR 赋值运算符 (|=):
// 15 decimal = 1111 binary 
var a:Number = 15; 
// 9 decimal = 1001 binary 
var b:Number = 9; 
// 1111 |= 1001 = 1111 
trace(a |= b); // returns 15 decimal (1111 binary) 

另请参见

>> bitwise right shift 运算符  
用法
expression >> shiftCount

expressionshiftCount 转换为 32 位整数,并将 expression 中的所有位向右移动由 shiftCount 转换所得到的整数指定的位数。移到右端以外的位将被舍去。如果要保留原始表达式的符号,那么,当 expression 的最高有效位(最左端的位)为 0 时,左侧的位都填补 0;如果最高有效位为 1,左侧的位都填补 1。将一个值右移一位等效于将它除以 2 并舍去余数。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用示例
下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255:
var a:Number = 65535 >> 8; 
trace(a); // 255
这是由于十进制的 65535 等于二进制的 00000000000000001111111111111111(十六个 0,后跟十六个 1);向右移 8 位将导致至少舍去 8 个最低有效位(最右边的 8 位)。因为 65535 是正数,所以,通过移位而空出的位的位置(最左边的 8 位)将填充 0。结果是二进制的 00000000000000000000000011111111(二十四个 0,后跟八个 1),这表示 32 位整数 255。
00000000000000001111111111111111 binary (65535 decimal)
>>                                8 decimal
--------------------
00000000000000000000000011111111 binary (255 decimal)
下例将 -8 转换为 32 位整数,然后右移 1 位,结果为十进制值 -4:
var a:Number = -8 >> 1;
trace(a); // -4
这是由于十进制的 -8 等于二进制的 11111111111111111111111111111000(二十九个 1,后跟三个 0);向右移一位将导致至少舍去一个最低有效位(最右边的位)。因为 -8 是负数,所以通过移位而空出的位的位置(最左边的位)将填充 1。结果是 11111111111111111111111111111100(三十个 1,后跟两个 0),这表示 32 位整数 -4。
11111111111111111111111111111000 binary (-8 decimal)
>>                                1 decimal
--------------------
11111111111111111111111111111100 binary (-4 decimal)

另请参见

>>= bitwise right shift and assignment 运算符  
用法
expression >>= shiftCount

执行按位向右移位运算,并将结果存储在 expression 中。

下面的两个语句是等效的:

A >>= B; 
A = (A >> B);

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
int — 按位运算的结果。

示例
如何使用示例
下面的代码使用按位向右移位并赋值运算符 (>>=):
function convertToBinary(numberToConvert:Number):String { 
    var result:String = ""; 
    for (var i = 0; i < 32; i++) { 
        // Extract least significant bit using bitwise AND. 
        var lsb:Number = numberToConvert & 1; 
        // Add this bit to the result.
        result = (lsb ? "1" : "0")+result; 
        // Shift numberToConvert right by one bit, to see next bit. 
        numberToConvert >>= 1; 
    } 
    return result; 
} 
trace(convertToBinary(479)); 
// Returns the string 00000000000000000000000111011111. 
// This string is the binary representation of the decimal number 479.

另请参见

>>> bitwise unsigned right shift 运算符  
用法
expression >>> shiftCount

此运算符与按位向右移位运算符 (>>) 基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位无符号整数,因此结果将是 0 到 4294967295 范围中的一个整数。

注意:ActionScript 没有辅助的“按位向左移位”运算符,但您可以使用 uint(expression << shiftCount) 来获得同样的效果。

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间的整数的数字或表达式。

结果
uint — 按位运算的结果。

示例
如何使用示例
下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1 >>> 1; 
trace(a); // 2147483647 
这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。

另请参见

>>>= bitwise unsigned right shift and assignment 运算符  
用法
expression >>>= shiftCount

执行无符号按位向右移位运算,并将结果存储在 expression 中。下面的两个语句是等效的:

A >>>= B; 
A = (A >>> B); 

操作数
expression:Number — 要向右移位的数字或表达式。
shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。

结果
uint — 按位运算的结果。

示例
如何使用示例
下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1;
a >>>= 1; 
trace(a); // 2147483647 
这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。

另请参见

^ bitwise XOR 运算符  
用法
expression1 ^ expression2

expression1expression2 转换为 32 位无符号整数,并在 expression1expression2 中对应位为 1(但不是在两者中均为 1)的每个位的位置上放置 1。

浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。

由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
int — 按位运算的结果。

示例
如何使用示例
下面的示例对十进制的 15 和 9 使用按位 XOR 运算符,然后将结果赋予变量 a
// 15 decimal = 1111 binary 
// 9 decimal = 1001 binary 
var a:Number = 15 ^ 9; 
trace(a); 
// 1111 ^ 1001 = 0110 
// returns 6 decimal (0110 binary) 

另请参见

^= bitwise XOR assignment 运算符  
用法
expression1 ^= expression2

expression1 ^ expression2 的值赋给 expression1。例如,下面两个语句是等效的:

x ^= y 
x = x ^ y 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
int — 按位运算的结果。

示例
如何使用示例
下例说明按位 XOR 赋值 (^=) 运算:
// 15 decimal = 1111 binary 
var a:Number = 15; 
// 9 decimal = 1001 binary 
var b:Number = 9; 
trace(a ^= b); // returns 6 decimal (0110 binary) 

另请参见

/*..*/ block comment delimiter 运算符  
用法
/* 注释 */
/* 注释
   注释 */

分隔一行或多行脚本注释。出现在开始分隔符 (/*) 和结束分隔符 (*/) 之间的字符被 ActionScript 编译器解释为注释并忽略。这些分隔符用于标识多个连续行的注释;对于单行注释,请使用 // 分隔符。

如果省略结束块注释分隔符 (*/) 或者尝试嵌套注释,则将收到错误消息。使用了开始分隔符 (/*) 之后,无论在第一个结束分隔符之前放置了多少个开始分隔符,第一个结束分隔符 (*/) 都会结束此注释。

操作数
comment:* — 任何字符。

示例
如何使用示例
下面的脚本在脚本的开头使用块注释分隔符:
/* records the X and Y positions of 
the ball and bat movie clips */ 
var ballX:Number = ball_mc._x; 
var ballY:Number = ball_mc._y; 
var batX:Number = bat_mc._x; 
var batY:Number = bat_mc._y; 
下面的嵌套注释尝试将导致一条错误消息:
/* This is an attempt to nest comments. 
/* But the first closing tag will be paired 
with the first opening tag */ 
and this text will not be interpreted as a comment */ 

另请参见

{ } braces (XML) 运算符  
用法
 myXML= <{tagName} {attributeName} = {attributeValue}>{content}</{tagName}>

计算在 XML 或 XMLList 初始值设定项中使用的表达式。XML 或 XMLList 初始值是赋予类型为 XML 或 XMLList 的变量的字面值。由 XML {} 运算符隔开的表达式可以用在 XML 或 XMLList 初始值中,而不能用在文本名称或值中。可以使用表达式来代替 tagNameattributeNameattributeValuecontent

操作数
myXML:* — 一个 XML 或 XMLList 对象。
tagName:* — 计算结果为 XML 标签名称的表达式。
attributeName:* — 计算结果为 XML 属性名称的表达式。
attributeValue:* — 计算结果为 XML 属性值的表达式。
content:* — 计算结果为 XML 标签内容的表达式。

示例
如何使用示例
下例说明在如何使用 { 和 } 运算符来定义 XML 文本:
var tagname:String = "item"; 
var attributename:String = "id"; 
var attributevalue:String = "5"; 
var content:String = "Chicken"; 
var x:XML = <{tagname} {attributename}={attributevalue}>{content}</{tagname}>; 
trace(x.toXMLString()); // <item id="5">Chicken</item>

另请参见

[ ] brackets (XML) 运算符  
用法
 myXML[expression]

访问 XML 或 XMLList 对象的属性或特性。方括号运算符允许您访问不能用点运算符 (.) 访问的属性名。

操作数
myXML:* — 一个 XML 或 XMLList 对象。
expression:* — 计算结果为 XML 标签名称或属性名称的表达式。

示例
如何使用示例
下例说明如何使用 [] 运算符来访问 而不能用点运算符访问的 XML 属性:
var myXML:XML = <a><foo-bar>44</foo-bar></a>;
trace(myXML["foo-bar"]);

另请参见

, comma 运算符  
用法
(expression1, expression2[, expressionN... ])

计算 expression1,然后计算 expression2,依此类推。此运算符主要与 for 循环语句一起使用,并且通常与括号 () 运算符一起使用。

操作数
expression1:* — 要计算的表达式。
expression2:* — 要计算的表达式。
expressionN:* — 要计算的任意数目的其它表达式。

结果
Object — 所计算表达式的值。

示例
如何使用示例
下例在 for 循环中使用逗号运算符 (,):
for (i = 0, j = 0; i < 3 && j < 3; i++, j+=2) { 
    trace("i = " + i + ", j = " + j); 
} 
// output: 
// i = 0, j = 0 
// i = 1, j = 2
下例使用逗号运算符但不使用括号运算符,来说明逗号运算符的优先级低于赋值运算符 (=) 运算符:
var v:Number = 0; 
v = 4, 5, 6; 
trace(v); // 4 
下例使用逗号运算符以及括号,并说明逗号运算符返回最后一个表达式的值:
var v:Number = 0; 
v = (4, 5, 6); 
trace(v); // 6 
下例使用逗号运算符但不使用括号,并说明逗号运算符导致按顺序计算所有的表达式。第一个表达式 v + 4 为变量 v 赋值,因为赋值运算符 (=) 的优先级高于逗号运算符。计算第二个表达式 z++,并将 z 加一。
var v:Number = 0; 
var z:Number = 0; 
v = v + 4 , z++, v + 6; 
trace(v); // 4 
trace(z); // 1 
下例与上一个示例基本相同,但是添加了括号,这会改变运算顺序,以便先计算逗号运算符再计算赋值运算符 (=):
var v:Number = 0; 
var z:Number = 0; 
v = (v + 4, z++, v + 6); 
trace(v); // 6 
trace(z); // 1 

另请参见

+ concatenation 运算符  
用法
expression1 + expression2

连接(合并)字符串。如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来。

如果这两个表达式都是数字,则该运算符充当加法运算符。

操作数
expression1:String — 要连接的字符串。
expression2:String — 要连接的字符串。

结果
String — 连接后的字符串。

示例
如何使用示例
下例连接两个字符串。
var lastName:String = "Cola"; 
var instrument:String = "Drums"; 
trace(lastName + " plays " + instrument); // Cola plays Drums 
下例说明如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来:
trace("Number " + 8 + 0); // Number 80
下例说明,由于字符串表达式右侧的数值已转换为字符串,因此不对它们进行求和:
var a:String = 3 + 10 + "asdf"; 
trace(a); // 13asdf 
var b:String = "asdf" + 3 + 10; 
trace(b); // asdf310 

另请参见

+ concatenation (XMLList) 运算符  
用法
expression1 + expression2

将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。只有当这两个操作数都是 XML 或 XMLList 值时,结果才为 XMLList 对象。

操作数
expression1:* — 一个 XML 或 XMLList 值。
expression2:* — 一个 XML 或 XMLList 值。

结果
XMLList — 连接起来的 XMLList 对象。

示例
如何使用示例
下例说明如何使用 XMLList (+)(连接)运算符:
var x1:XML = 
        <employee id = "42">
            <firstName>Joe</firstName>
            <lastName>Smith</lastName>
        </employee>;

var x2:XML = 
        <employee id = "43">
            <firstName>Susan</firstName>
            <lastName>Jones</lastName>
        </employee>;

var myXMLList:XMLList = x1 + x2;
    
trace(myXMLList.toXMLString()); 

trace 语句可生成以下输出:

<employee id = "42">
    <firstName>Joe</firstName>
    <lastName>Smith</lastName>
</employee>
<employee id = "43">
    <firstName>Susan</firstName>
    <lastName>Jones</lastName>
</employee>
    

另请参见

+= concatenation assignment 运算符  
用法
expression1 += expression2

expression1 + expression2 的值赋给 expression1。例如,以下两个语句的结果是相同的:

x += y; 
x = x + y;
连接运算符 (+) 的所有规则均适用于连接赋值运算符 (+=)。请注意,对 TextFieldtext 属性使用连接赋值(即 someTextField.text += moreText)的效率远不如 TextField.appendText(),尤其是对于包含大量内容的 TextField 而言。

操作数
expression1:String — 字符串。
expression2:String — 字符串。

结果
Number — 连接运算的结果。

示例
如何使用示例
下例使用 += 运算符和字符串表达式:
var x1:String = "My name is "; 
x1 += "Gilbert"; 
trace(x1); // My name is Gilbert 

另请参见

+= concatenation assignment (XMLList) 运算符  
用法
expression1 += expression2

对 XMLList 对象 expression1 赋予 expression1 + expression2 的值。例如,以下两个语句的结果是相同的:

x += y; 
x = x + y;
XMLList 连接运算符 (+) 的所有规则均适用于 XMLList 连接赋值运算符 (+=)。

操作数
expression1:XMLList — 要向其中添加新值的 XMLList 对象。
expression2:* — 一个 XML 或 XMLList 值。

示例
如何使用示例
下例说明如何使用 XMLList 连接赋值运算符 (+=):
var x1:XML = <location>Athens</location>;    
var x2:XML = <location>Paris</location>;        
myXMLList = x1 + x2;

var x3:XML = <location>Springfield</location>;
myXMLList += x3;
            
trace(myXMLList.toXMLString());

trace 语句可生成以下输出:

<location>Athens</location>
    
<location>Paris</location>    

<location>Springfield</location>

另请参见

?: conditional 运算符  
用法
expression1 ? expression2 : expression3

计算 expression1,如果 expression1 的值为 true,则结果为 expression2 的值;否则,结果为 expression3 的值。

操作数
expression1:Boolean — 计算结果为布尔值的表达式;通常为像 x < 5 这样的比较表达式。
expression2:* — 任何类型的值。
expression3:* — 任何类型的值。

结果
*expression2expression3 的值。

示例
如何使用示例
下面的语句将变量 x 的值赋予变量 z,因为第一个表达式的计算结果是 true
var x:Number = 5; 
var y:Number = 10; 
var z = (x < 6) ? x: y; 
trace(z); // returns 5
下面的示例说明简写的条件语句:
var timecode:String = (new Date().getHours() < 11) ? "AM" : "PM"; 
trace(timecode); 
也可以按普通形式编写该条件语句,如下例所示:
if (new Date().getHours() < 11) { 
    var timecode:String = "AM"; 
} else { 
    var timecode:String = "PM"; 
}
trace(timecode); 

另请参见

-- decrement 运算符  
用法
--expression
expression--

操作数减去 1。该操作数可以是变量、数组中的元素或对象的属性。此运算符的预先递减格式 (--expression) 从expression中减去 1,然后返回结果。此运算符的滞后递减格式 (expression--) 从 expression 中减去 1,然后返回 expression 的初始值(即减去 1 之前的值)。

操作数
expression:Number — 一个数字或计算结果为数字的变量。

结果
Number — 被递减的值的结果。

示例
如何使用示例
此运算符的预先递减格式将 x 递减为 2 (x - 1 = 2),并将结果作为 y 返回:
var x:Number = 3; 
var y:Number = --x; // y is equal to 2
此运算符的滞后递减格式将 x 递减为 2 (x - 1 = 2),并将 x 的初始值作为结果 y 返回:
var x:Number = 3; 
var y:Number = x--; // y is equal to 3
下例从 10 到 1 循环,循环的每次迭代将计数器变量 i 减 1:
for (var i = 10; i > 0; i--) { 
    trace(i); 
}

另请参见

delete 运算符  
用法
 delete reference

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

破坏由 reference 指定的对象属性;如果在运算完成后该属性不存在,则结果为 true;否则,结果为 false。如果对不存在的属性或类中未定义的动态属性调用 delete 运算符,则该运算符返回 true

如果 reference 参数不能删除,delete 运算符可能会失败并返回 false。不能删除用 var 语句声明的固定属性或变量。固定属性是类定义中的变量或方法。

除非类是运行时添加的动态类,否则不能使用 delete 运算符破坏该类的属性。不能使用 delete 破坏密封类的属性。而应当将该属性设置为 null

注意:尽管不能删除对象,但是可以通过删除对某个对象的所有引用来使该对象符合垃圾回收条件。对某个对象最常见的引用就是指向该对象的变量。可以通过将该变量设置为 null 来删除这样的引用。垃圾回收器会删除没有引用的所有对象。

操作数
reference:* — 要消除的属性的名称。

结果
Boolean — 如果删除成功,则值为 true;如果删除失败,则值为 false

示例
如何使用示例
下例删除对象的一个属性:
// create the new object "account" 
var account:Object = new Object(); 
// assign property name to the account 
account.name = "Jon"; 
// delete the property 
delete account.name; 
trace(account.name); // undefined

// delete a nonexistent property
var fooDeleted:Boolean = delete account.foo;
trace(fooDeleted); // true

下例删除数组元素的值,但是 length 属性的值不变:

var my_array:Array = new Array(); 
my_array[0] = "abc"; // my_array.length == 1 
my_array[1] = "def"; // my_array.length == 2 
my_array[2] = "ghi"; // my_array.length == 3 
// my_array[2] is deleted, but Array.length is not changed 
delete my_array[2]; 
trace(my_array.length); // 3 
trace(my_array); // abc,def,

下例说明如何将从 delete 返回的布尔值用作以后代码执行的条件。请注意,如果某项已被删除,则对该项再次调用 delete 将返回 false

var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean

deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];

trace(my_array) // outputs: undefined,undefined,ghi

另请参见

delete (XML) 运算符  
用法
 delete reference

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

删除由 reference 指定的 XML 元素或属性。

在与 XMLList 操作数一起使用时,delete 运算符的结果总是为 true,因为 XMLList 操作数总是引用有效(尽管有可能为空)的 XMLList 对象。

操作数
reference:XMLList — 用来指定要删除的 XML 元素或属性的 XMLList 对象。

结果
Boolean — 如果删除成功,则值为 true;如果删除失败,则值为 false

示例
如何使用示例
下例说明如何依次删除一个属性、一个元素、多个元素:
 
var x1:XML = <x1>
                <a id = "52">AYY</a>
                <a>AYY 2 </a>
                <b>BEE</b>
                <c>CEE</c>
            </x1>;

trace(x1.toXMLString());
trace("___________");

delete x1.a.@id;

trace(x1.toXMLString());
trace("___________");

delete x1.b;

trace(x1.toXMLString());
trace("___________");

delete x1.a;

trace(x1.toXMLString());

输出如下所示:

<x1>
  <a id="52">AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
___________
<x1>
  <a>AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
___________
<x1>
  <a>AYY</a>
  <a>AYY 2</a>
  <c>CEE</c>
</x1>
___________
<x1>
  <c>CEE</c>
</x1>

下例说明如何删除某个元素的所有内容(包括属性和子元素),而不删除该元素本身:
 
var xml:XML = 
            <order>
                <item id="121">hamburger</item>
                <item id="122">fries</item>
                <item id="123">chocolate shake</item>
            </order>;
delete xml.item[1].*;
delete xml.item[1].@*;
trace(xml);

此示例的输出如下所示:

<order>
  <tem id="121">hamburger</item>
  <item/>
  <item id="123">chocolate shake</item>
</order>

.. descendant accessor 运算符  
用法
 myXML..childElement1..@attributeName 

定位到 XML 或 XMLList 对象的后代元素,或(结合使用 @ 运算符)查找匹配的后代属性。匹配元素或属性不必是 XML 或 XMLList 对象的子级,它们可以位于树中的更低位置(例如,孙级)。结果是 XMLList 对象,因为有多个子元素或子属性可以匹配。

节点在所返回的 XMLList 对象中的顺序由深度优先遍历结果确定。例如,请看以下例子:

var myXML:XML = <a>
			<b>one
				<c> 
					<b>two</b> 
				</c> 
			</b>
			<b>three</b>
		</a>;

trace(myXML..b[0].toXMLString());
trace("______________");
trace(myXML..b[1].toXMLString());
trace("______________");
trace(myXML..b[2].toXMLString());

将生成如下输出:

<b>
  one
  <c>
    <b>two</b>
  </c>
</b>
______________
<b>two</b>
______________
<b>three</b>

若要返回名称与 ActionScript 保留字相匹配的后代,请使用 XML.descendants() 方法,而不要使用后代运算符 (..),如下例所示:

var xml:XML = 
<enrollees>
	<student id="239">
		<class name="Algebra" />
 		<class name="Spanish 2"/>
	</student>
	<student id="206">
		<class name="Trigonometry" />
 		<class name="Spanish 2" />
	</student>
 </enrollees>;
 trace(xml.descendants("class")); 
 

操作数
myXML:Object — XML 或 XMLList 对象。
childElement1_or_attributeName — XML 属性的名称或某个特性的名称。

示例
如何使用示例
下例说明如何使用后代存取器运算符 (..) 返回 XML 对象的后代元素以及元素的属性:
var myXML:XML = 
    <employees>
        <employee id = "42">
            <firstName>Billy</firstName>
            <lastName>Einstein</lastName>
        </employee>
        <employee id = "43">
            <firstName>Sally</firstName>
            <lastName>Shostakovich</lastName>
        </employee>
    </employees>
    
trace(myXML..firstName); 
    // <firstName>Billy</firstName>
    // <firstName>Sally</firstName>
                
trace(myXML..@id); //4243

另请参见

/ division 运算符  
用法
expression1 / expression2

expression1 除以 expression2。除法运算的结果为双精度浮点数。

操作数
expression:Number — 一个数字或计算结果为数字的变量。

结果
Number — 运算的浮点结果。

示例
如何使用示例
下例说明被除数是正数、负数或 0 时,除以 0 时得到的不同结果。
trace(3/0);   // Infinity
trace(-3/0);  // -Infinity
trace(0/0);   // NaN

另请参见

/= division assignment 运算符  
用法
expression1 /= expression2

expression1 / expression2 的值赋给 expression1。例如,下面两个语句是等效的:

x /= y; 
x = x / y;

操作数
expression1:Number — 一个数字或计算结果为数字的变量。
expression2:Number — 一个数字或计算结果为数字的变量。

结果
Number — 一个数字。

示例
如何使用示例
下面的代码说明如何将除法赋值运算符 (/=) 与变量和数字结合使用:
var a:Number = 10; 
var b:Number = 2; 
a /= b; trace(a); // 5 

另请参见

. dot 运算符  
用法
object.property_or_method

访问类变量和方法,获取并设置对象属性并分隔导入的包或类。

操作数
object:Object — 类的实例。此对象可以是任何内置 ActionScript 类的实例或者您所定义类的实例。此操作数总是在点 (.) 运算符的左侧。
property_or_method:* — 与对象相关联的属性或方法的名称。内置类的所有有效方法和属性都会在该类的方法和属性摘要表中列出。此操作数总是在点 (.) 运算符的右侧。

结果
* — 在点右侧命名的变量、方法或属性。

示例
如何使用示例
下例在导入 Timer 类时将点运算符用作分隔符。
import flash.utils.Timer;
下例创建一个通用对象并使用点运算符来添加新属性。
var obj:Object = new Object();
obj.propertyA = "hello";
trace(obj.propertyA);  // hello

另请参见

. dot (XML) 运算符  
用法
myXML.childElement
myXML.@attributeName 

定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。返回的对象是 XMLList,因为有多个子元素或子属性可以匹配。

若要返回名称与 ActionScript 保留字相匹配的元素,请使用 XML.elements() 方法或 XML.descendants() 方法,而不要使用 XML 点 (.) 运算符,如下例所示:

var xml:XML = 
	<student id="206">
		<class name="Trigonometry" />
		<class name="Spanish 2" />
	</student>;
trace(xml.elements("class"));
trace(xml.descendants("class")); 

操作数
myXML:Object — XML 或 XMLList 对象。
childElement:* — XML 属性的名称。
attributeName:* — 属性的名称。

结果
XMLList — 指定的 XMLList。

示例
如何使用示例
下例说明如何使用点 (.) 运算符来返回 XML 对象的子元素以及元素的属性:
var myXML:XML = 
    <employee id = "42">
        <firstName>Billy</firstName>
        <lastName>Einstein</lastName>
    </employee>;

trace(myXML.firstName); // Billy
trace(myXML.@id);       // 42

另请参见

== equality 运算符  
用法
expression1 == expression2

测试两个表达式是否相等。如果表达式相等,则结果为 true

如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:

如果这两个操作数的数据类型不匹配,则结果为 false,但在以下情况下除外:

操作数
expression1:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 如果这两个表达式相等,则值为 true,否则为 false

示例
如何使用示例
下例将等于运算符 (==) 与 if 语句结合使用:
var a:String = "David"
var b:String = "David"; 
if (a == b) { 
    trace("David is David"); 
} 
下例说明在按值进行比较时,等于运算符执行自动类型转换。字符串值转换为数字:
var a:Number = 5; 
var b:String = "5"; 
trace(a == b); // true
布尔值转换为数字,而 true 转换为 1,false 转换为 0:
var c:Number = 1; 
var d:Boolean = true; 
trace(c == d); // true
var e:Number = 0; 
var f:Boolean = false; 
trace(e == f); // true
但是,字符串值不会转换为布尔值,因此下面的语句返回 false
var g:String = "true";
var h:Boolean = true;
trace(g == h); // false
下面的示例说明按引用进行比较。第一个示例比较两个具有相同长度和元素的数组。对于这两个数组,等于运算符将返回 false。虽然数组 firstArraysecondArray 看起来相等,但是按引用进行比较要求它们都引用同一个数组。第二个示例创建 thirdArray 变量,该变量与变量 firstArray 指向同一个数组。对于这两个数组,等于运算符将返回 true,因为这两个变量引用同一个数组。
var firstArray:Array = new Array("one", "two", "three"); 
var secondArray:Array = new Array("one", "two", "three"); 
trace(firstArray == secondArray); // false 
/* Arrays are only considered equal 
if the variables refer to the same array. */
var thirdArray:Array = firstArray; 
trace(firstArray == thirdArray); // true 

另请参见

> greater than 运算符  
用法
expression1 > expression2

比较两个表达式,并确定 expression1 是否大于 expression2;如果是,则结果为 true。如果 expression1 小于等于 expression2,则此运算符返回 false

如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 大于 expression2,则值为 true,否则为 false

示例
如何使用示例
下例说明按字母顺序对字符串进行比较,大写字符排在小写字母的前面:
var a:String = "first";
var b:String = "First";
trace(a > b); // true
下例说明如何将类型为 String 和 Boolean 的值转换为数字:
var c:Number = 5;
var d:String = "4";
trace(c > d); // true

var e: Number = 2;
var f:Boolean = true;
trace(e > f); // true

>= greater than or equal to 运算符  
用法
expression1 >= expression2

比较两个表达式,确定 expression1 是大于或等于 expression2 (true) 还是 expression1 小于 expression2 (false)。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 大于等于 expression2,则值为 true,否则为 false

示例
如何使用示例
在下面的示例中,大于或等于运算符 (>=) 用于确定当前小时是否大于或等于 12:
if (new Date().getHours() >= 12) { 
    trace("good afternoon"); 
} else { 
    trace("good morning"); 
}

另请参见

in 运算符  
用法
expression1 in expression2

计算属性是否为特定对象的一部分。若要使用 in 运算符,请将属性名指定为第一个操作数,并将对象指定为第二个操作数。如果指定的对象包含这样的属性,则结果为 true,否则结果为 false

如果指定的对象是 Array 对象,则可以使用 in 运算符来检查特定的索引编号是否有效。如果向第一个操作数传递整数,那么,当索引位于有效的索引编号范围内时,结果为 true,否则为 false

结果
Boolean — 如果 expression1 是由 expression2 表示的对象的属性,则值为 true,否则为 false

示例
如何使用示例
下例使用 in 运算符来说明 PI 是 Math 对象的属性,而 myProperty 却不是。
trace("PI" in Math);         // true
trace("myProperty" in Math); // false

下例使用 in 运算符来说明数字 0、1 和 2 是 myArray 对象中的有效索引编号,而数字 3 却不是。

public var myArray:Array = ["zero", "one", "two"];
trace(0 in myArray); // true
trace(1 in myArray); // true
trace(2 in myArray); // true
trace(3 in myArray); // false

另请参见

++ increment 运算符  
用法
++expression
 expression++

将表达式加 1。该表达式可以是变量、数组中的元素或对象的属性。运算符的预先递增格式 (++expression) 将 expression加 1,然后返回结果。此运算符的滞后递增格式 (expression++) 将 expression 加 1,然后返回 expression 的初始值(加 1 之前的值)。

操作数
expression:Number — 一个数字或计算结果为数字的变量。

结果
Number — 递增的结果。

示例
如何使用示例
下例将 ++ 用作 while 循环中的预先递增运算符,并说明添加到数组中的值是已经递增的值:
var preInc:Array = new Array(); 
var i:int = 0; 
while (i < 10) { 
    preInc.push(++i); 
} 
trace(preInc); // 1,2,3,4,5,6,7,8,9,10 
下例将 ++ 用作 while 循环中的滞后递增运算符,并说明添加到数组中的值是初始值:
 
var postInc:Array = new Array(); 
var i:int = 0; 
while (i < 10) { 
   postInc.push(i++); 
} 
trace(postInc); // 0,1,2,3,4,5,6,7,8,9 
下面的示例将 ++ 用作滞后递增运算符,以使while循环运行五次:
var i:int = 0; 
while (i++ < 5) { 
    trace("this is execution " + i); 
} 
/* output: 
   this is execution 1 
   this is execution 2 
   this is execution 3 
   this is execution 4 
   this is execution 5 
*/

另请参见

!= inequality 运算符  
用法
expression1 != expression2

测试结果是否与等于运算符 (==) 正好相反。如果 expression1 等于 expression2,则结果为 false。与等于运算符 (==) 一样,相等的定义取决于所比较的数据类型。

如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:

如果这两个操作数的数据类型不匹配,则不等于运算符 (!=) 返回 true,但在以下情况下除外:

操作数
expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 如果表达式不相等,则值为 true,否则为 false

示例
如何使用示例
下面的示例说明不等于运算符 (!=) 的结果:
trace(5 != 8); // true 
trace(5 != 5); // false 
下面的示例说明在 if 语句中使用不等于运算符 (!=):
var a:String = "David";
var b:String = "Fool";
if (a != b) { 
    trace("David is not a fool"); 
}
下面的示例说明按引用比较两个函数:
var a:Function = function() { trace("foo"); }; 
var b:Function = function() { trace("foo"); }; 
a(); // foo 
b(); // foo 
trace(a != b); // true 
a = b; 
a(); // foo 
b(); // foo 
trace(a != b); // false
下面的示例说明按引用比较两个数组:
var a:Array = [ 1, 2, 3 ]; 
var b:Array = [ 1, 2, 3 ]; 
trace(a);      // 1,2,3 
trace(b);      // 1,2,3 
trace(a != b); // true 
a = b; 
trace(a);      // 1,2,3 
trace(b);      // 1,2,3 
trace(a != b); // false

另请参见

instanceof 运算符  
用法
expression instanceof function

计算表达式的原型链是否包括 function 的原型对象。之所以包括 instanceof 运算符,是为了与 ECMAScript 3.0 版保持向后兼容,它对于选择用带构造函数的基于原型的继承来代替类继承的高级程序员可能非常有用。

若要检查对象是否为特定数据类型的成员,请使用 is 运算符。

当与类一起使用时,instanceof 运算符类似于 is 运算符,因为类的原型链包括其所有超类。但是,原型链上不包括接口,因此当与接口一起使用时,instanceof 运算符的结果始终为 false,而 is 运算符的结果为 true(如果对象属于实现指定接口的类)。

注意:ActionScript is 运算符与 Java 中的 instanceof 运算符等效。

操作数
expression:Object — 要对其进行计算的包含原型链的对象。
function:Object — 一个函数对象(或类)。

结果
Boolean — 如果 expression 的原型链包括 function 的原型对象,则返回 true,否则返回 false

示例
如何使用示例
下例创建名为 mySprite 的 Sprite 类的一个实例,并使用 instanceof 运算符来测试 mySprite 的原型链是否包括 Sprite 和 DisplayObject 类的原型对象。对于 Sprite 类和 DisplayObject 类来说,结果为 true,因为 Sprite 和 DisplayObject 的原型对象位于 mySprite 的原型链上。
var mySprite:Sprite = new Sprite();
trace(mySprite instanceof Sprite);        // true
trace(mySprite instanceof DisplayObject); // true
下例使用 IBitmapDrawable 接口说明 instanceof 运算符不能与接口一起使用。由于 DisplayObject 是实现 IBitmapDrawable 接口的 Sprite 类的超类,因此 is 运算符的结果为 true
var mySprite:Sprite = new Sprite();
trace(mySprite instanceof IBitmapDrawable); // false
trace(mySprite is IBitmapDrawable);         // true

另请参见

is 运算符  
用法
expression1 is expression2

计算对象是否与特定数据类型、类或接口兼容。使用 is 运算符(而非 instanceof 运算符)进行类型比较。还可以使用 is 运算符来检查对象是否实现某个接口。

结果
Boolean — 如果 expression1 与在 expression2 中指定的数据类型、类或接口兼容,则为 true,否则为 false

示例
如何使用示例
下例创建名为 mySprite 的 Sprite 类的一个实例,并使用 is 运算符来测试 mySprite 是否为 Sprite 和 DisplayObject 类的实例,以及它是否实现 IEventDispatcher 接口。
import flash.display.*;
import flash.events.IEventDispatcher;

var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite);           // true
trace(mySprite is DisplayObject);    // true
trace(mySprite is IEventDispatcher); // true

另请参见

< less than 运算符  
用法
expression1 < expression2

比较两个表达式,并确定 expression1 是否小于 expression2;如果是,则结果为 true。如果 expression1 大于等于 expression2,则结果为 false

如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 小于 expression2,则值为 true,否则为 false

示例
如何使用示例
下面的示例说明为数值和字符串比较返回的 truefalse
trace(5 < 10); // true 
trace(2 < 2);            // false 
trace(10 < 3);           // false 
trace("Allen" < "Jack"); // true 
trace("Jack" < "Allen"); // false 
trace("11" < "3");       // true 
trace("11" < 3);         // false (numeric comparison) 
trace("C" < "abc");      // true 
trace("A" < "a");        // true 

<= less than or equal to 运算符  
用法
expression1 <= expression2

比较两个表达式,并确定 expression1 是否小于等于 expression2;如果是,则结果为 true。如果 expression1 大于 expression2,则结果为 false

如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。

操作数
expression1:Object — 一个字符串、整数或浮点数。
expression2:Object — 一个字符串、整数或浮点数。

结果
Boolean — 如果 expression1 小于等于 expression2,则值为 true,否则为 false

示例
如何使用示例
下面的示例说明为数值和字符串比较返回的 truefalse
trace(5 <= 10); // true 
trace(2 <= 2);            // true 
trace(10 <= 3);           // false 
trace("Allen" <= "Jack"); // true 
trace("Jack" <= "Allen"); // false 
trace("11" <= "3");       // true 
trace("11" <= 3);         // false (numeric comparison) 
trace("C" <= "abc");      // true 
trace("A" <= "a");        // true 

// line comment delimiter 运算符  
用法
// comment

指示脚本注释的开始。出现在注释分隔符 (//) 和行结束字符之间的字符被解释为注释并被忽略。此分隔符用于单行注释;对于多个连续行的注释,请使用 /**/ 分隔符。

操作数
comment:* — 任何字符。

示例
如何使用示例
下例说明单行注释:
// Any text following a line comment delimiter is ignored during compilation

另请参见

&& logical AND 运算符  
用法
expression1 && expression2

如果 expression1false 或可以转换为 false,则返回该表达式;否则,返回 expression2。可以转换为 false 的值的示例有 0、NaNnullundefined。如果将函数调用用作 expression2,那么,当 expression1 的计算结果为 false 时,将不调用该函数。

如果这两个操作数的类型均为 Boolean,那么,只有当这两个操作数均为 true 时,结果才为 true,如下表中所示:

表达式 计算结果
true && true true
true && false false
false && false false
false && true false

操作数
expression1:* — 任何类型的值或表达式。
expression2:* — 任何类型的表达式的值。

结果
* — 如果这两个操作数的类型均为 Boolean,则结果为布尔值。否则,结果为任一表达式的值。

示例
如何使用示例
下面的示例使用逻辑 AND 运算符 (&&) 执行一个测试,确定游戏者是否已经赢得游戏。在游戏过程中,当游戏者赢得一轮或者得到计分点时,就会更新变量 turnsscore。在 3 轮之内游戏者的得分达到或超过 75 时,脚本就会输出“You Win the Game!”。
var turns:Number = 2; 
var score:Number = 77; 
if ((turns <= 3) && (score >= 75)) { 
    trace("You Win the Game!"); 
} else { 
    trace("Try Again!"); 
} 

另请参见

! logical NOT 运算符  
用法
!expression

对变量或表达式的布尔值取反。如果 expression 是具有绝对值或经过转换的值的 true 变量,则 !expression 的值为 false。如果表达式 x && y 的计算结果为 false,则表达式 !(x && y) 的计算结果为 true

下面的表达式说明了使用逻辑 NOT (!) 运算符的结果:

操作数
expression:Boolean — 计算结果为布尔值的表达式或变量。

结果
Boolean — 逻辑运算的布尔结果。

示例
如何使用示例
在下面的示例中,变量 happy 设置为 falseif 条件计算 !happy 条件,如果后者为 true,则 trace() 语句输出一个字符串。
var happy:Boolean = false; 
if (!happy) { 
    trace("don't worry, be happy"); // don't worry, be happy 
} 
执行 trace 语句,因为 !false 等于 true

另请参见

|| logical OR 运算符  
用法
expression1 || expression2

如果 expression1true 或可以转换为 true,则返回该表达式;否则,返回 expression2。如果将函数调用用作 expression2,那么,当 expression1 的计算结果为 true 时,将不调用该函数。

如果这两个操作数的类型均为 Boolean,那么,当这两个表达式或其中一个表达式为 true 时,结果为 true;只有当这两个表达式均为 false 时,结果才为 false,如下表中所示:

表达式 计算结果
true || true true
true || false true
false || false false
false || true true

操作数
expression1:* — 任何类型的值。
expression2:* — 任何类型的值。

结果
* — 如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。

示例
如何使用示例
下面的示例在 if 语句中使用逻辑 OR 运算符 (||)。第二个表达式的计算结果为 true,因此最终结果为 true
var a:Number = 10; 
var b:Number = 250; 
var start:Boolean = false; 
if ((a > 25) || (b > 200) || (start)) { 
    trace("the logical OR test passed"); // the logical OR test passed 
} 
因为 if 语句中的条件之一为 true (b > 200),所以将出现撀呒?OR 测试通过”消息。

下例说明如何将函数调用作为第二个操作数会怎样导致意外的结果。如果运算符左侧的表达式的计算结果为 true,则返回该结果,而不计算右侧的表达式(不调用函数 fx2())。

function fx1():Boolean { 
    trace("fx1 called"); 
    return true; 
} 
function fx2():Boolean { 
    trace("fx2 called"); 
    return true; 
} 
if (fx1() || fx2()) { 
    trace("IF statement entered");
}

另请参见

% modulo 运算符  
用法
expression1 % expression2

计算 expression1除以 expression2 的余数。如果有任一操作数不是数字值,则模运算符 (%) 会尝试将它转换为数字。

模运算结果的符号与被除数(第一个数字)的符号相匹配。例如,-4 % 3-4 % -3 的计算结果都为 -1

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。只包含数字字符的字符串的计算结果为一个数字。
expression2:Number — 一个数字或计算结果为数字的表达式。只包含数字字符的字符串的计算结果为一个数字。

结果
Number — 算术运算的结果。

示例
如何使用示例
下面的数值示例使用模运算符 (%):
trace(12 % 5);    // 2 
trace(4.3 % 2.1); // 0.0999999999999996 
trace(4 % 4);     // 0 
第一个 trace 返回 2,而不是 12/5 或 2.4,因为模运算符 (%) 仅返回余数。第二个 trace 返回 0.0999999999999996 而不是预期的 0.1,因为在二进制计算中对浮点数精度有限制。

另请参见

%= modulo assignment 运算符  
用法
expression1 %= expression2

expression1 % expression2 的值赋给 expression1。下面的两个语句是等效的:

x %= y; 
x = x % y; 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 算术运算的结果。

示例
如何使用示例
下面的示例将值 4 赋予变量 a
var a:Number = 14; 
var b:Number = 5; 
a %= b;
trace(a); // 4 

另请参见

* multiplication 运算符  
用法
expression1 * expression2

将两个数值表达式相乘。如果两个表达式都是整数,则积为整数。如果其中任何一个或两个表达式是浮点数,则积为浮点数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 一个整数或浮点数。

示例
如何使用示例
下面的语句将整数 2 与 3 相乘,结果为整数 6:
trace(2*3); // 6 
下面的语句将浮点数 2.0 与 3.1416 相乘,结果为浮点数 6.2832:
trace(2.0 * 3.1416); // 6.2832 

另请参见

*= multiplication assignment 运算符  
用法
expression1 *= expression2

expression1 * expression2 的值赋给 expression1。例如,以下两个表达式是等效的:

x *= y 
x = x * y 

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Numberexpression1 * expression2 的值。如果表达式不能转换为数值,则返回 NaN(非数字)。

示例
如何使用示例
下面的示例将值 50 赋予变量 a
var a:Number = 5; 
var b:Number = 10; 
trace(a *= b); // 50 
下面示例的第二行和第三行计算等号右侧的表达式,然后将结果赋予 cd
var i:Number = 5; 
var c:Number = 4 - 6; 
var d:Number = i + 2; 
trace(c *= d); // -14 

另请参见

:: name qualifier 运算符  
用法
namespace::property
namespace::method()
namespace::xmlObject.property
namespace::xmlObject.@attribute

标识属性、方法或 XML 属性或特性的命名空间。

操作数
namespace:Object — 用来进行标识的命名空间。
propertyName:Object — 要标识的属性、方法、XML 属性或 XML 特性。

示例
如何使用示例
下例使用 :: 运算符来标识两个不同命名空间中的两种同名方法:
public class NamespaceExample extends Sprite {
    public namespace French;
    public namespace Hawaiian;
    public function NamespaceExample() {
        trace(Hawaiian::hello()); // aloha
        trace(French::hello()); // bonjour
    }
    Hawaiian function hello():String {
        return "aloha";
    }

    French function hello():String { 
        return "bonjour";
    }
}
下例使用 :: 运算符来标识具有指定命名空间的 XML 属性:
var soap:Namespace = new Namespace("http://schemas.xmlsoap.org/wsdl/soap/");
var w:Namespace = new Namespace("http://weather.example.org/forecast");
var myXML:XML = 
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> 
     <soap:Body>
      <w:forecast xmlns:w="http://weather.example.org/forecast">
       <w:city>Quito</w:city>
       <w:country>Ecuador</w:country>
       <date>2006-01-14</date>
      </w:forecast>
      </soap:Body>
    </soap:Envelope>;
    
trace(myXML.soap::Body.w::forecast.w::city); // Quito

另请参见

new 运算符  
用法
new constructor(parameters)

运行时版本: Flash Player 5

对类实例进行实例化。new 运算符可以与类型为 Class 的变量一起用来创建类的实例。new 运算符通常与 class 对象一起用来创建类的实例。例如,语句 new Sprite() 创建 Sprite 类的实例。

new 运算符还可用来将类与嵌入的资源(这是编译为 SWF 文件的外部对象,如图像、声音或字体)。每个嵌入资源都由一个唯一的嵌入资源类表示。若要访问嵌入资源,必须使用 new 运算符来实例化与其关联的类。因此,可以调用嵌入资源类的相应方法和属性来处理嵌入资源。

如果您喜欢用 Function 对象(而非 class 关键字)来定义类,则可以使用 new 运算符来基于构造函数创建对象。请勿将类的构造函数与构造函数方法混淆。构造函数是用 function 关键字定义的 Function 对象,但它不属于类定义。如果您使用构造函数来创建对象,则必须使用原型继承来代替类继承。

操作数
constructor:* — 一个类、函数或变量,可用来保存类型为 Class 的值。
parameters:* — 一个或多个用逗号分隔的参数。

示例
如何使用示例
下例创建 Book 类,然后使用 new 运算符来创建对象 book1book2
class Book {
  var bName:String;
  var bPrice:Number;
  
  public function Book(nameParam:String, priceParam:Number){
    bName = nameParam;
    bPrice = priceParam;
  }
}

var book1:Book = new Book("Confederacy of Dunces", 19.95);
var book2:Book = new Book("The Floating Opera", 10.95);
trace(book1); // [object Book]
下例使用 new 运算符来创建具有 18 个元素的 Array 类的实例:
var golfCourse:Array = new Array(18);

另请参见

{} object initializer 运算符  
用法
object = {name1 : value1, name2 : value2,... nameN : valueN}

创建一个新对象,并用指定的 namevalue 属性对初始化该对象。使用此运算符的效果与使用 new Object 语法并用赋值运算符填充属性对的效果相同。新建对象的原型通常命名为 Object 对象。

此运算符也用于标记与流控制语句(forwhileifelseswitch)和函数相关联的连续代码块。

操作数
object:Object — 要创建的对象。
name1,2,...N:Object — 属性名。
value1,2,...N:Object — 每个 name 属性的对应值。

结果
Object — 一个 Object 对象。

示例
如何使用示例
下面代码的第一行用对象初始值设定项 ({}) 运算符创建一个空对象;第二行用构造函数创建一个新对象。
var object:Object = {}; 
var object:Object = new Object(); 
下面的示例创建一个对象 account,并用附带的值初始化属性 nameaddresscitystatezipbalance
var account:Object = {name:"Adobe Systems, Inc.", address:"601 Townsend Street", city:"San Francisco", state:"California", zip:"94103", balance:"1000"}; 
for (i in account) { 
    trace("account."+i+" = "+account[i]); 
} 
下面的示例说明数组和对象初始值设定项可以如何相互嵌套:
var person:Object = {name:"Gina Vechio", children:["Ruby", "Chickie", "Puppa"]}; 
下面的代码使用上述示例中的信息,并使用构造函数得到相同的结果:
var person:Object = new Object(); 
person.name = "Gina Vechio"; 
person.children = new Array(); 
person.children[0] = "Ruby"; 
person.children[1] = "Chickie"; 
person.children[2] = "Puppa"; 

另请参见

() parentheses 运算符  
用法
(expression1[, expression2])
(expression1, expression2)
function(parameter1,..., parameterN) 

对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括号前面的函数。

用法 1:控制运算符的执行顺序。括号覆盖正常的优先级顺序,从而导致先计算括号内的表达式。如果括号是嵌套的,则先计算最里面括号中的内容,然后计算较靠外括号中的内容。

用法 2:按顺序计算用逗号分隔的一系列表达式,并返回最终表达式的结果。

用法 3:括住一个或多个参数并将它们传递给括号前面的函数。

操作数
expression1:Object — 一个表达式,可以包括数字、字符串、变量或文本。
expression2:Object — 一个表达式,可以包括数字、字符串、变量或文本。
function:Function — 要对括号中的内容执行的函数。
parameter1...parameterN:Object — 一系列参数,在将结果作为参数传递给括号外的函数之前执行这些参数。

示例
如何使用示例
用法 1:下列语句说明如何使用括号来控制表达式的执行顺序:
trace((2 + 3) * (4 + 5)); // 45 
trace(2 + (3 * (4 + 5))); // 29
trace(2 + (3 * 4) + 5);   // 19
trace(2 + (3 * 4) + 5);   // 19
用法 2:下例计算函数 foo(),再计算函数 bar(),然后返回表达式 a + b 的结果:
var a:Number = 1; 
var b:Number = 2; 
function foo() { 
  a += b; 
} 
function bar() { 
  b *= 10; 
} 
trace((foo(), bar(), a + b)); // 23 
用法 3:下面的示例说明将括号与函数结合使用的方法:
var today:Date = new Date(); 
trace(today.getFullYear()); // outputs current year 
function traceParameter(param):void { 
  trace(param); 
} 
traceParameter(2 * 2); // 4 

另请参见

( ) parentheses (XML) 运算符  
用法
myXML.(expression)

计算 ECMAScript for XML (E4X) XML 构造中的表达式。例如,myXML.(lastName == "Smith") 标识名为 lastName 且值为 "Smith" 的 XML 元素。结果为 XMLList 对象。

操作数
myXML:* — 一个 XML 或 XMLList 对象。
expression:* — 用来定义匹配元素的表达式。

结果
XMLList — 由括号指定的 XMLList。

示例
如何使用示例
下例说明如何使用括号来标识元素和属性:
var myXML:XML = 
    <employees>
        <employee id = "42">
            <firstName>Joe</firstName>
            <lastName>Smith</lastName>
        </employee>
        <employee id = "43">
            <firstName>Susan</firstName>
            <lastName>Jones</lastName>
        </employee>
        <employee id = "44">
            <firstName>Anne</firstName>
            <lastName>Smith</lastName>
        </employee>
    </employees>;
    
trace(myXML.employee.(lastName == "Smith").@id.toXMLString()); 
    // 42
    // 44
                
trace(myXML.employee.(Number(@id) > 42).@id.toXMLString()); 
    // 43
    // 44

另请参见

/ RegExp delimiter 运算符  
用法
/pattern/flags

如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (RegExp),而不是一个变量、字符串或其它 ActionScript 元素。但是,请注意,两个连续的正斜杠字符 (//) 表示注释开始。

操作数
pattern:String — 一个或一系列用来定义正则表达式模式的字符。
flags:String — 零个或一系列如下字符:g(表示 global 标志)、i(表示 ignoreCase 标志)、s(表示 dotall 标志)、x(表示 extended 标志)。

示例
如何使用示例
下例使用正斜杠字符 (/) 设置类型为 RegExp 的变量的值(为了在匹配时忽略大小写,设置了 i 标志)。
var myRegExp:RegExp = /foo-\d+/i; 
trace(myRegExp.exec("ABC Foo-32 def.")); // Foo-32 

另请参见

=== strict equality 运算符  
用法
expression1 === expression2

测试两个表达式是否相等,但不执行自动数据转换。如果两个表达式(包括它们的数据类型)相等,则结果为 true

全等运算符 (===) 与等于运算符 (==) 在以下三个方面相同:

全等运算符 (===) 与等于运算符 (==) 仅在以下两个方面不同: 在涉及到原始值(例如,var x:Number = 1)和原始对象(例如,var x:Number = new Number(1))这两种情况下,全等运算符在 ActionScript 3.0 中生成的结果与在 ActionScript 2.0 中生成的结果不同。这是由于 ActionScript 3.0 不再区分原始值和原始包装对象。

首先,在 ActionScript 3.0 中,在对包含相同值的原始值和原始对象进行比较时将返回 true,但是在早期版本中则返回 false。在早期版本中,原始值的数据类型是 Boolean、Number 或 String,而原始对象的数据类型总是 Object,而不是 Boolean、Number 或 String。这种区别的实际效果是,在早期版本的 ActionScript 中,下面的代码生成 false(因为操作数的数据类型不匹配),但是在 ActionScript 3.0 中,结果为 true(因为原始值的类型为 Boolean、Number、int、uint 或 String,而与它们是否包装在对象中无关)。

var num1:Number = 1;
var num2:Number = new Number(1);
trace(num1 === num2); // true in ActionScript 3.0, false in ActionScript 2.0
			
第二,在对两个包含相同值的原始对象进行比较时,在 ActionScript 3.0 中将生成 true,但在早期版本中将生成 false
var num1:Number = new Number(1);
var num2:Number = new Number(1);
trace(num1 == num2);  // true in ActionScript 3.0, false in ActionScript 2.0
trace(num1 === num2); // true in ActionScript 3.0, false in ActionScript 2.0
原因在于,在早期版本的 ActionScript 中,这两个变量的数据类型均为 Object,因此将对它们按引用进行比较,而且等于运算和全等运算的结果均为 false。但是,在 ActionScript 3.0 中,这两个变量的数据类型均为 Number,因此将按值对它们进行比较,等于运算和全等运算的结果均为 true

操作数
expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 比较的布尔结果。

示例
如何使用示例
下例说明当值和数据类型都匹配时,全等运算符 (===) 与等于运算符 (==) 相同:
var string1:String = "5"; 
var string2:String = "5"; 
trace(string1 == string2);  // true 
trace(string1 === string2); // true
下例说明全等运算符不将 String 类型的数据转换为 Number 类型的数据,但是等于运算符 (==) 却进行这样的转换:
// The equality (==) operator converts 5 to "5", but the strict equality operator does not
var string1:String = "5"; 
var num:Number = 5; 
trace(string1 == num);  // true 
trace(string1 === num); // false 
下例说明全等运算符不将布尔值转换为数字,但是等于运算符却进行这样的转换:
var num:Number = 1;
var bool:Boolean = true;
trace(num == bool);  // true 
trace(num === bool); // false
下例说明全等运算符确实转换 int 和 uint 数据类型:
var num1:Number = 1;
var num2:int = 1;
var num3:uint = 1;
trace(num1 === num2); // true
trace(num1 === num3); // true
下例说明全等运算符将 nullundefined 视为不相等,但是等于运算符却将它们视为相等:
trace(null == undefined);  // true 
trace(null === undefined); // false 

另请参见

!== strict inequality 运算符  
用法
expression1 !== expression2

测试结果与全等运算符 (===) 正好相反。除了仅转换 int 和 uint 数据类型外,不全等运算符执行的运算与不等于运算符相同。

如果 expression1 等于 expression2,并且它们的数据类型相等,则结果为 false

不全等运算符 (!==) 与不等于运算符 (!=) 在以下三个方面相同:

不全等运算符与不等于运算符 (!=) 仅在以下两个方面不同:

操作数
expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。
expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。

结果
Boolean — 比较的布尔结果。

示例
如何使用示例
下面代码中的注释说明使用等于运算符 (==)、全等运算符 (===) 和不全等运算符 (!==) 的运算的返回值:
var s1:String = "5"; 
var s2:String = "5"; 
var s3:String = "Hello"; 
var n:Number = 5; 
var b:Boolean = true; 
trace(s1 == s2);  // true 
trace(s1 == s3);  // false 
trace(s1 == n);   // true 
trace(s1 == b);   // false 
trace(s1 === s2); // true 
trace(s1 === s3); // false 
trace(s1 === n);  // false 
trace(s1 === b);  // false 
trace(s1 !== s2); // false 
trace(s1 !== s3); // true 
trace(s1 !== n);  // true 
trace(s1 !== b);  // true 

另请参见

" string delimiter 运算符  
用法
 "text" 

如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其它 ActionScript 元素。

操作数
text:String — 零个或一系列字符。

示例
如何使用示例
下面的示例使用引号 (") 指示变量 yourGuess 的值是文本字符串 "Prince Edward Island",而不是变量名。
var yourGuess:String = "Prince Edward Island"; 
submit_btn.onRelease = function() { trace(yourGuess); }; 
// Prince Edward Island

另请参见

- subtraction 运算符  
用法
-expression
 expression1 - expression2

运行时版本: Flash Player 9

用于执行求反或减法运算。

用法 1:用于执行求反时,该运算符将数值表达式的符号反转。

用法 2:用于减法时,该运算符对两个数值表达式执行算术减法运算,从 expression1 中减去 expression2。两个表达式都为整数时,差为整数。其中任何一个或两个表达式为浮点数时,差为浮点数。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 一个整数或浮点数。

示例
如何使用示例
用法 1:下面的语句将表达式 2 + 3 的符号反转:
trace(-(2 + 3)); // -5 
用法 2:下面的语句从整数 5 中减去整数 2:
trace(5 - 2); // 3 
结果 3 是整数。

下面的语句从浮点数 3.25 中减去浮点数 1.5:

trace(3.25 - 1.5); // 1.75 
结果为浮点数 1.75。

另请参见

-= subtraction assignment 运算符  
用法
expression1 -= expression2

expression1 - expression2 的值赋给 expression1。例如,下面两个语句是等效的:

x -= y ;
x = x - y;

必须将字符串表达式转换为数字;否则,结果为 NaN(非数字)。

操作数
expression1:Number — 一个数字或计算结果为数字的表达式。
expression2:Number — 一个数字或计算结果为数字的表达式。

结果
Number — 算术运算的结果。

示例
如何使用示例
下例使用减法赋值运算符 (-=) 从 5 中减去 10,然后将结果赋予变量 x
var x:Number = 5; 
var y:Number = 10; 
x -= y; 
trace(x); // -5 
以下示例显示如何将字符串转换为数字:
var x:String = "5"; 
var y:String = "10"; 
x -= y; 
trace(x); // -5 

另请参见

: type 运算符  
用法
[modifiers] var variableName:type
function functionName():type { ...}
function functionName(parameter1:type, ..., parameterN:type) [:type]{ ... } 

用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。在变量声明或赋值中使用时,此运算符指定变量的类型;在函数声明或定义中使用时,此运算符指定函数的返回类型;在函数定义中与函数参数一起使用时,此运算符指定该参数预期的变量类型。

类型检查总是发生在运行时。但是,当编译器设置为严格模式时,所有类型都在编译时检查,并在出现不匹配的情况时生成错误。在使用点运算符 (.) 进行赋值运算、函数调用和类成员解除引用的过程中,可能出现不匹配情况。

您可以使用的类型包括所有本机对象类型,您定义的类和接口以及 void。可识别的本机类型有 Boolean、Number、int、uint 和 String。所有内置类都被视为本机类型,因此也受支持。

如果未指定数据类型,则变量、函数返回值或函数参数将被视为无类型,这意味着值可以属于任何数据类型。如果希望解释您打算使用无类型值,则可以将星号 (*) 字符用作类型注释。当用作类型注释时,星号字符等同于将变量、函数返回类型或函数参数保留为无类型。

操作数
variableName:* — 变量的标识符。
type:* — 本机数据类型、您已定义的类名称或者接口名称。
functionName:Function — 函数的标识符。
parameter:* — 函数参数的标识符。

示例
如何使用示例
用法 1:下面的示例声明一个类型为 String 且名为 userName 的公共变量,并且为该变量分配一个空字符串:
var userName:String = ""; 
用法 2:下例说明如何通过定义名为 randomInt() 的函数来指定某函数的返回类型(将该函数的返回类型指定为 int):
function randomInt(integer:int):int { 
    return Math.round(Math.random()*integer); 
} 
trace(randomInt(8)); 
用法 3:下面的示例定义一个名为 squareRoot() 的函数,该函数采用名为 val 且类型为 Number 的参数,返回 val 的平方根(也为 Number 类型):
function squareRoot(val:Number):Number { 
    return Math.sqrt(val); 
} 
trace(squareRoot(121)); 

另请参见

typeof 运算符  
用法
typeof expression

语言版本: ActionScript 3.0
运行时版本: Flash Player 9

计算 expression 并返回一个指定表达式的数据类型的字符串。结果限制在六个可能的字符串值:booleanfunctionnumberobjectstringxml。如果向用户定义的类应用此运算符,则结果为字符串 object。之所以包括 typeof 运算符是为了向后兼容。使用 is 运算符可以检查类型是否兼容。

操作数
expression:Object — 一个要计算的对象。

结果
String — 类型为 expression 的字符串表示形式。下表说明对各个类型的表达式使用 typeof 运算符的结果。

表达式类型 结果
数组 object
Boolean boolean
Function function
int number
Number number
object object
String string
uint number
XML xml
XMLList xml

示例
如何使用示例
下例说明针对各个对象和值使用 typeof 时的结果。
trace(typeof Array); // object
trace(typeof Date);  // object
trace(typeof 3);     // number
下例说明在 ActionScript 3.0 中,无论您赋予字面值还是使用 new 运算符来创建对象,原始对象的数据类型都相同。这与早期版本的 ActionScript 中不同,在早期版本中,typeof 运算符对于变量 b 返回 object
var a:String = "sample";
var b:String = new String("sample");
trace(typeof a); // string
trace(typeof b); // string 

另请参见

void 运算符  
用法
void expression

运行时版本: Flash Player 9

计算表达式,然后放弃其值,返回 undefinedvoid 运算符通常用在一些比较中,这些比较使用 == 运算符来测试未定义的值。

操作数
expression:Object — 要计算的表达式。

结果
* — 值 undefined

另请参见

< > XML literal tag delimiter 运算符  
用法
 myXML= <{tagName} {attributeName} = {attributeValue}>{content}</{tagName}>

在 XML 文本中定义 XML 标签。使用正斜杠 / 可以定义结束标签。

操作数
myXML:* — 一个 XML 或 XMLList 对象。
tagName:* — 计算结果为 XML 标签名称的表达式。
attributeName:* — 计算结果为 XML 属性名称的表达式。
attributeValue:* — 计算结果为 XML 属性值的表达式。
content:* — 计算结果为 XML 标签内容的表达式。

示例
如何使用示例
下例说明如何使用 <> 运算符来定义 XML 文本:
var x:XML = <item id= "324">cola</item>; 

另请参见