1、Flash ActionScript 3.0 语言和组件参考(运算符)第 1 页 共 75 页符号运算符是指定如何组合、比较或修改表达式值的字符。算术 + addition 加上数字表达式。- decrement 操作数减去 1。/ division expression1 除以 expression2。+ increment 将表达式加 1。% modulo 计算 expression1 除以 expression2 的余数。* multiplication 将两个数值表达式相乘。- subtraction 用于执行求反或减法运算。算术组合赋值 += addition assignment
2、将 expression1 + expression2 的值赋给 expression1。/= division assignment 将 expression1 / expression2 的值赋给 expression1。%= modulo assignment 将 expression1 % expression2 的值赋给 expression1。*= multiplication assignment 将 expression1 * expression2 的值赋给 expression1。-= subtraction assignment 将 expression1 - expre
3、ssion2 的值赋给 expression1。赋值 = assignment 将 expression2(右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。按位 / 5下面的语句将浮点数 2.5 与 3.25 相加: trace(2.5 + 3.25); / 5.75下例说明如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来: trace(“Number “ + 8 + 0); / Number 80与动态和输入文本字段相关联的变量是字符串数据类型。在以下示例中,变量 deposit 是舞台上的一个输入文本字段。在用户输入存款数目后,该脚本尝试
4、将 deposit 添加到 oldBalance。然而,由于 deposit 的类型是 String,因此脚本连接(合并成一个字符串)变量的值,而不是对它们求和。 var oldBalance:Number = 1345.23; var currentBalance = deposit_txt.text + oldBalance; trace(currentBalance); 例如,如果用户在 deposit 文本字段中输入 475,则 trace() 语句将值 4751345.23 发送到撌涑觥泵姘濉若要更正这一点,请使用 Number() 函数将字符串转换为数字,如下所示: var old
5、Balance:Number = 1345.23; var currentBalance:Number = Number(deposit_txt.text) + oldBalance;trace(currentBalance);Flash ActionScript 3.0 语言和组件参考(运算符)第 6 页 共 75 页另请参见 + (concatenation)+= addition assignment运算符 用法 expression1 += expression2语言版本: ActionScript 3.0运行时版本: Flash Player 9将 expression1 + exp
6、ression2 的值赋给 expression1。例如,以下两个语句的结果是相同的:x += y; x = x + y;加法运算符 (+) 的所有规则适用于加法赋值运算符 (+=)。 操作数 expression1:Number 一个数字。 expression2:Number 一个数字。 结果 Number 加法运算的结果。示例如何使用示例 下例说明加法赋值运算符 (+=) 的数值用法: var x:Number = 5; var y:Number = 10; x += y; trace(x); / 15 另请参见 + (addition) array access运算符 用法 myArr
7、ay = a0, a1,.aNmyArrayi = value myObjectpropertyName运行时版本: Flash Player 9用指定的元素(a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。数组访问运算符使您能够动态地设置和检索实例、变量和对象的名称。它还使您能够访问对象属性。 用法 1:数组是一个对象,其属性称为元素,这些元素由名为索引的数字逐一标识。创建数组时,需用数组访问 () 运算符(即方括号)括住元素。一个数组可以包含各种Flash ActionScript 3.0 语言和组件参考(运算符)第 7 页 共 75 页类型的元素。例如,下面这个名为 empl
8、oyee 的数组包含三个元素;第一个元素是一个数字,另外两个元素是字符串(在引号内): 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 ele
9、ments.*/ 用法 2:用方括号 () 括住每个元素的索引可直接对其进行访问;这样可以向数组添加新元素以及更改或检索现有元素的值。数组中第一个索引始终是 0,如下例所示: var my_array:Array = new Array(); my_array0 = 15; my_array1 = “Hello“; my_array2 = true; 可以使用方括号来添加第四个元素,如下例所示: my_array3 = “George“; 可以使用方括号访问多维数组中的元素。第一对括号标识原始数组中的元素,第二对括号标识嵌套数组中的元素。下面的 trace() 语句查找第二个数组(索引 1)的
10、第三个元素(索引 2)。 var ticTacToe:Array = 1, 2, 3, 4, 5, 6, 7, 8, 9; trace(ticTacToe12); / 6 用法 3:可以使用数组访问运算符来动态设置和检索对象的属性值: var obj:Object = new Object();obj.prop1 = “foo“;trace(obj“prop“ + 1); / fooobj.prop2 = “bar“;for (j in obj) trace(objj); /* Output of for loop: foobar */操作数 myArray:Object 数组的名称。 a0,
11、 a1,.aN:Object 数组中的元素;任何本机类型或对象实例,包括嵌套的数组。 i:Number 大于等于 0 的整数索引。 myObject:Object 对象的名称。 propertyName:String 为对象的属性命名的字符串。 结果 Object Flash ActionScript 3.0 语言和组件参考(运算符)第 8 页 共 75 页用法 1:对一个数组的引用。用法 2:数组中的一个值;本机类型或对象实例(包括数组实例)。用法 3:对象的一个属性;本机类型或对象实例(包括数组实例)。 示例如何使用示例 下例说明创建新的空 Array 对象的两种方法;第一行使用方括号:
12、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_array2 = “Sam“; trace(employee_array); / Barbara,George,Sam 在下例中,计算括号中的表达式,并将结果用作要从 obj 对象
13、中检索的变量的名称: var obj:Object = new Object();obj.prop1 = “foo“;obj.prop2 = “bar“;for (var i:int = 1;i Presta tube3.99;trace(myXML.id); / 42下一个示例返回所有的属性名: var xml:XML =var xml2:XMLList = xml.*;trace(xml2 is XMLList); / truetrace(xml2.length(); / 2for (var i:int = 0; i trace(xml.attribute(“class“);另请参见 XM
14、L classXMLList classXML.attribute()XML.attributes()var update:Number = 11; trace(insert / 9 (or 1001 binary) 对 13(二进制的 1101)11(二进制的 1011)执行按位 AND 的结果是 9,因为这两个数字中只有第一个和最后一个位置具有数字 1。 1101/ 4294967295 trace(0xFFFFFFFF / -1 trace(0xFFFFFFFF / -1 trace(4294967295 / -1 trace(4294967295 / -1 另请参见 x = x 操作数
15、 expression1:Number 一个数字或计算结果为数字的表达式。 expression2:Number 一个数字或计算结果为数字的表达式。 结果 int expression1 var y:Number = 9; trace(x / 9 另请参见 / 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
16、|= ReadOnlyFlag; trace(flags); Flash ActionScript 3.0 语言和组件参考(运算符)第 17 页 共 75 页/* 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
17、the read-only flag. The following code constructs the mask and performs the bitwise AND: */ flags trace(flags); / 0 1 0 另请参见 / 9 decimal = 1001 binary var b:Number = 9; / 1111 | 1001 = 1111 trace(a | b); / returns 15 decimal (1111 binary) 请勿将单个 |(按位 OR)与 |(逻辑 OR)混淆。 另请参见 x = x | y; 操作数 expression1:N
18、umber 要转换的数字。 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) Flash ActionScript 3.0 语言和组件参考(运算符)第 19 页 共 75 页另请参
19、见 trace(a); / 255这是由于十进制的 65535 等于二进制的 00000000000000001111111111111111(十六个 0,后跟十六个 1);向右移 8 位将导致至少舍去 8 个最低有效位(最右边的 8 位)。因为 65535 是正数,所以,通过移位而空出的位的位置(最左边的 8 位)将填充 0。Flash ActionScript 3.0 语言和组件参考(运算符)第 20 页 共 75 页结果是二进制的 00000000000000000000000011111111(二十四个 0,后跟八个 1),这表示 32 位整数 255。 000000000000000
20、01111111111111111 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 是负数,所以通过移位而空出的位的位置(最左边的
21、位)将填充 1。结果是 11111111111111111111111111111100(三十个 1,后跟两个 0),这表示 32 位整数 -4。 11111111111111111111111111111000 binary (-8 decimal) 1 decimal-11111111111111111111111111111100 binary (-4 decimal)另请参见 = (bitwise right shift and assignment)= bitwise right shift and assignment运算符 用法 expression = shiftCount语言
22、版本: ActionScript 3.0运行时版本: Flash Player 9执行按位向右移位运算,并将结果存储在 expression 中。 下面的两个语句是等效的: A = B; A = (A B);操作数 expression:Number 要向右移位的数字或表达式。 shiftCount:Number 转换为介于 0 和 31 之间整数的数字或表达式。 结果 int 按位运算的结果。示例如何使用示例 下面的代码使用按位向右移位并赋值运算符 (=): function convertToBinary(numberToConvert:Number):String var result:
23、String = “; for (var i = 0; i = 1; return result; trace(convertToBinary(479); / Returns the string 00000000000000000000000111011111. / This string is the binary representation of the decimal number 479.另请参见 (bitwise right shift) bitwise unsigned right shift运算符 用法 expression shiftCount语言版本: ActionScr
24、ipt 3.0运行时版本: Flash Player 9此运算符与按位向右移位运算符 () 基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。 浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。 由于结果被解释为 32 位无符号整数,
25、因此结果将是 0 到 4294967295 范围中的一个整数。 注意:ActionScript 没有互补的“按位无符号向左移位”运算符,但是,您可以通过使用 uint(expression 1; trace(a); / 2147483647 这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。 另请参见 (
26、bitwise right shift)= (bitwise right shift and assignment)= bitwise unsigned right shift and assignment运算符 用法 expression = shiftCount语言版本: ActionScript 3.0运行时版本: Flash Player 9执行无符号按位向右移位运算,并将结果存储在 expression 中。下面的两个语句是等效的: A = B; A = (A B); 操作数 expression:Number 要向右移位的数字或表达式。 shiftCount:Number 转换为介
27、于 0 和 31 之间整数的数字或表达式。 结果 uint 按位运算的结果。示例如何使用示例 下面的示例将 -1 转换为 32 位整数并向右移 1 位: var a:Number = -1;a = 1; trace(a); / 2147483647 这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。 另请
28、参见 (bitwise unsigned right shift)= (bitwise right shift and assignment)Flash ActionScript 3.0 语言和组件参考(运算符)第 23 页 共 75 页 bitwise XOR运算符 用法 expression1 expression2语言版本: ActionScript 3.0运行时版本: Flash Player 9将 expression1 和 expression2 转换为 32 位无符号整数,并在 expression1 或 expression2 中对应位为 1(但不是在两者中均为 1)的每个位的
29、位置上放置 1。 浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。 由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。 操作数 expression1:Number 一个数字或计算结果
30、为数字的表达式。 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) 另请参见 / 9 decimal = 1001 binary var b:Number = 9;
31、trace(a = b); / returns 6 decimal (0110 binary) 另请参见 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 b
32、e interpreted as a comment */ 另请参见 / (line comment delimiter) braces (XML)运算符 用法 myXML= content语言版本: ActionScript 3.0运行时版本: Flash Player 9计算在 XML 或 XMLList 初始值设定项中使用的表达式。XML 或 XMLList 初始值是赋予类型为 XML 或 XMLList 的变量的字面值。由 XML 和 运算符隔开的表达式可以用在 XML 或 XMLList 初始值中,而不能用在文本名称或值中。可以使用表达式来代替 tagName、attributeNa
33、me、attributeValue 和 content。 操作数 myXML:* 一个 XML 或 XMLList 对象。 tagName:* 计算结果为 XML 标签名称的表达式。 attributeName:* 计算结果为 XML 属性名称的表达式。 attributeValue:* 计算结果为 XML 属性值的表达式。 content:* 计算结果为 XML 标签内容的表达式。 示例Flash ActionScript 3.0 语言和组件参考(运算符)第 26 页 共 75 页如何使用示例 下例说明在如何使用 和 运算符来定义 XML 文本: var tagname:String = “
34、item“; var attributename:String = “id“; var attributevalue:String = “5“; var content:String = “Chicken“; var x:XML = content; trace(x.toXMLString(); / Chicken另请参见 XML classXMLList class brackets (XML)运算符 用法 myXMLexpression语言版本: ActionScript 3.0运行时版本: Flash Player 9访问 XML 或 XMLList 对象的属性或特性。方括号运算符允许您
35、访问不能用点运算符 (.) 访问的属性名。 操作数 myXML:* 一个 XML 或 XMLList 对象。 expression:* 计算结果为 XML 标签名称或属性名称的表达式。 示例如何使用示例 下例说明如何使用 和 运算符来访问 而不能用点运算符访问的 XML 属性: var myXML:XML = 44;trace(myXML“foo-bar“);另请参见 XML classXMLList class, comma运算符 用法 (expression1, expression2, expressionN. )语言版本: ActionScript 3.0运行时版本: Flash Pl
36、ayer 9Flash ActionScript 3.0 语言和组件参考(运算符)第 27 页 共 75 页计算 expression1,然后计算 expression2,依此类推。此运算符主要与 for 循环语句一起使用,并且通常与括号 () 运算符一起使用。操作数 expression1:* 要计算的表达式。 expression2:* 要计算的表达式。 expressionN:* 要计算的任意数目的其它表达式。 结果 Object 所计算表达式的值。示例如何使用示例 下例在 for 循环中使用逗号运算符 (,): for (i = 0, j = 0; i JoeSmith;var x2:
37、XML = SusanJones;var myXMLList:XMLList = x1 + x2;trace(myXMLList.toXMLString(); trace 语句可生成以下输出:JoeSmithSusanJones另请参见 XMLList classXMLList global function+= concatenation assignment运算符 用法 expression1 += expression2Flash ActionScript 3.0 语言和组件参考(运算符)第 30 页 共 75 页语言版本: ActionScript 3.0运行时版本: Flash Pl
38、ayer 9将 expression1 + expression2 的值赋给 expression1。例如,以下两个语句的结果是相同的:x += y; x = x + y;连接运算符 (+) 的所有规则均适用于连接赋值运算符 (+=)。请注意,对 TextField 的 text 属性使用连接赋值(即 someTextField.text += moreText)的效率远不如 TextField.appendText(),尤其是对于包含大量内容的 TextField 而言。 操作数 expression1:String 字符串。 expression2:String 字符串。 结果 Numbe
39、r 连接运算的结果。示例如何使用示例 下例使用 += 运算符和字符串表达式: var x1:String = “My name is “; x1 += “Gilbert“; trace(x1); / My name is Gilbert 另请参见 + (concatenation)+= concatenation assignment (XMLList)运算符 用法 expression1 += expression2语言版本: ActionScript 3.0运行时版本: Flash Player 9对 XMLList 对象 expression1 赋予 expression1 + expression2 的值。例如,以下两个语句的结果是相同的: x += y; x = x + y;XMLList 连接运算符 (+) 的所有规则均适用于 XMLList 连接赋值运算符 (+=)。 操作数 expression1:XMLList 要向其中添加新值的 XMLList 对象。 expression2:* 一个 XML 或 XMLList 值。 示例如何使用示例 下例说明如何使用 XMLList 连接赋值运算符 (+=):