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


  算术
 +addition加上数字表达式。
 --decrement操作数减去 1。
 /divisionexpression1 除以 expression2
 ++increment将表达式加 1。
 %modulo计算 expression1除以 expression2 的余数。
 *multiplication将两个数值表达式相乘。
 -subtraction用于执行求反或减法运算。
  算术组合赋值
 +=addition assignmentexpression1 赋予 expression1 / expression2 的值。
 /=division assignmentexpression1 赋予 expression1 / expression2 的值。
 %=modulo assignmentexpression1 赋予 expression1 / expression2 的值。
 *=multiplication assignmentexpression1 赋予 expression1 / expression2 的值。
 -=subtraction assignmentexpression1 赋予 expression1 / expression2 的值。
  赋值
 =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 赋予 expression1 / expression2 的值。
 >>=bitwise right shift and assignment执行按位向右移位运算,并将结果存储在 expression 中。
 >>>=bitwise unsigned right shift and assignment执行无符号按位向右移位运算,并将结果存储在 expression 中。
 ^=bitwise XOR assignmentexpression1 赋予 expression1 ^ expression2 的值。
  注释
 /*..*/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 赋予 expression1 / expression2 的值。
 "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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来,而不是进行求和。否则,如果表达式不是数字,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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

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]

Player 版本 : 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。如果第一个操作数是该数据类型的成员,则结果为第一个操作数。否则,结果为 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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 

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

标识 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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
--------------
二进制的 10000000000 等于十进制的 1024

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

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

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

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

另请参见

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

执行按位向左移位 (<<=) 运算,并将内容作为结果存储在 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

执行按位向右移位运算,并将结果存储在 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

此运算符与按位向右移位运算符 (>>) 基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

执行无符号按位向右移位运算,并将结果存储在 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

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 运算符  
用法
/* comment */
/* comment
   comment */

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

分隔一行或多行脚本注释。出现在开始分隔符 (/*) 和结束分隔符 (*/) 之间的字符被 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}>

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

计算在 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]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

访问 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... ])

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

计算 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

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

操作数
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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

将 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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

expression1 赋予 expression1 / expression2 的值。例如,下面两个语句的结果是相同的:

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

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

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

另请参见