ActionScript语法参考手册

sweetbaybe

贡献于2011-06-27

字数:168034 关键词: ActionScript开发 手册 ActionScript Java C/C++

ActionScript 语法参考手册 1 ActionScript 语法参考手册 目 录 一、AS 3.0 运算符 ........................................................................................................................... 6 + addition 运算符......................................................................................................................................... 6 += addition assignment 运算符................................................................................................................... 6 [] array access 运算符 .................................................................................................................................. 6 as 运算符 ..................................................................................................................................................... 7 = assignment 运算符................................................................................................................................... 7 @ attribute identifier 运算符......................................................................................................................... 8 & bitwise AND 运算符 ................................................................................................................................. 8 << bitwise left shift 运算符 ......................................................................................................................... 9 <<= bitwise left shift and assignment 运算符........................................................................................... 10 ~ bitwise NOT 运算符................................................................................................................................ 10 | bitwise OR 运算符 ................................................................................................................................... 11 |= bitwise OR assignment 运算符 ............................................................................................................. 11 >> bitwise right shift 运算符 ..................................................................................................................... 12 >>= bitwise right shift and assignment 运算符......................................................................................... 12 >>> bitwise unsigned right shift 运算符 ................................................................................................... 13 >>>= bitwise unsigned right shift and assignment 运算符....................................................................... 13 ^ bitwise XOR 运算符................................................................................................................................. 13 ^= bitwise XOR assignment 运算符........................................................................................................... 14 /*..*/ block comment delimiter 运算符 ...................................................................................................... 14 { } braces (XML) 运算符.............................................................................................................................. 15 [ ] brackets (XML) 运算符........................................................................................................................... 15 , comma 运算符......................................................................................................................................... 15 + concatenation 运算符 ............................................................................................................................. 16 + concatenation (XMLList) 运算符............................................................................................................. 16 += concatenation assignment 运算符 ....................................................................................................... 17 += concatenation assignment (XMLList) 运算符....................................................................................... 17 ?: conditional 运算符.................................................................................................................................. 18 -- decrement 运算符................................................................................................................................ 18 delete 运算符............................................................................................................................................. 19 delete (XML) 运算符 .................................................................................................................................. 19 ... descendant accessor 运算符 ................................................................................................................. 20 / division 运算符......................................................................................................................................... 21 ActionScript 语法参考手册 2 /= division assignment 运算符 ................................................................................................................... 21 . dot 运算符................................................................................................................................................ 21 . dot (XML) 运算符 ..................................................................................................................................... 22 == equality 运算符..................................................................................................................................... 22 > greater than 运算符 ................................................................................................................................ 23 >= greater than or equal to 运算符............................................................................................................ 23 in 运算符 .................................................................................................................................................... 23 ++ increment 运算符 ................................................................................................................................. 24 != inequality 运算符 ................................................................................................................................... 24 instanceof 运算符 ...................................................................................................................................... 25 is 运算符 .................................................................................................................................................... 25 < less than 运算符 ..................................................................................................................................... 26 <= less than or equal to 运算符................................................................................................................. 26 // line comment delimiter 运算符 ............................................................................................................... 27 && logical AND 运算符 .............................................................................................................................. 27 ! logical NOT 运算符 .................................................................................................................................. 28 || logical OR 运算符 .................................................................................................................................... 28 % modulo 运算符 ...................................................................................................................................... 28 %= modulo assignment 运算符................................................................................................................. 29 * multiplication 运算符............................................................................................................................... 29 *= multiplication assignment 运算符......................................................................................................... 30 :: name qualifier 运算符 ............................................................................................................................. 30 new 运算符 ................................................................................................................................................ 30 {} object initializer 运算符............................................................................................................................ 31 () parentheses 运算符 ................................................................................................................................ 31 ( ) parentheses (XML) 运算符..................................................................................................................... 32 / RegExp delimiter 运算符.......................................................................................................................... 33 === strict equality 运算符.......................................................................................................................... 33 !== strict inequality 运算符........................................................................................................................ 34 " string delimiter 运算符 ............................................................................................................................. 35 - subtraction 运算符.................................................................................................................................. 35 -= subtraction assignment 运算符............................................................................................................ 35 : type 运算符 .............................................................................................................................................. 36 typeof 运算符............................................................................................................................................. 36 void 运算符 ................................................................................................................................................ 37 < > XML literal tag delimiter 运算符 .......................................................................................................... 37 + 运算符..................................................................................................................................................... 38 +=............................................................................................................................................................... 38 [].................................................................................................................................................................. 38 as 运算符 ................................................................................................................................................... 39 = assignment 运算符 ................................................................................................................................. 39 @ attribute identifier 运算符....................................................................................................................... 40 & bitwise AND 运算符 ............................................................................................................................... 40 &= bitwise AND assignment...................................................................................................................... 41 << bitwise left shift 运算符........................................................................................................................ 41 <<= bitwise left shift and assignment 运算符........................................................................................... 42 ~ bitwise NOT 运算符................................................................................................................................ 42 ActionScript 语法参考手册 3 | bitwise OR 运算符 ................................................................................................................................... 43 |= bitwise OR assignment 运算符 ............................................................................................................. 43 >> bitwise right shift 运算符 ..................................................................................................................... 44 >>= bitwise right shift and assignment 运算符......................................................................................... 44 >>> bitwise unsigned right shift 运算符 ................................................................................................... 45 >>>= bitwise unsigned right shift and assignment 运算符....................................................................... 45 ^ bitwise XOR 运算符................................................................................................................................. 45 ^= bitwise XOR assignment 运算符........................................................................................................... 46 /*..*/ block comment delimiter 运算符 ...................................................................................................... 46 { } braces (XML) 运算符.............................................................................................................................. 47 [ ] brackets (XML) 运算符........................................................................................................................... 47 , comma 运算符......................................................................................................................................... 48 + concatenation 运算符 ............................................................................................................................. 48 + concatenation (XMLList) 运算符............................................................................................................. 48 += concatenation assignment 运算符 ....................................................................................................... 49 += concatenation assignment (XMLList) 运算符....................................................................................... 50 ?: conditional 运算符.................................................................................................................................. 50 -- decrement 运算符................................................................................................................................ 50 delete 运算符............................................................................................................................................. 51 delete (XML) 运算符 .................................................................................................................................. 51 .. descendant accessor 运算符 .................................................................................................................. 52 / division 运算符......................................................................................................................................... 53 /= division assignment 运算符................................................................................................................... 53 . dot 运算符................................................................................................................................................ 53 . dot (XML) 运算符 ..................................................................................................................................... 54 == equality 运算符..................................................................................................................................... 54 > greater than 运算符 ................................................................................................................................ 55 >= greater than or equal to 运算符............................................................................................................ 55 in 运算符 .................................................................................................................................................... 56 ++ increment 运算符................................................................................................................................. 56 != inequality 运算符................................................................................................................................... 56 instanceof 运算符 ...................................................................................................................................... 57 is 运算符 .................................................................................................................................................... 57 < less than 运算符 ..................................................................................................................................... 58 <= less than or equal to 运算符................................................................................................................. 58 // line comment delimiter 运算符............................................................................................................... 59 && logical AND 运算符 .............................................................................................................................. 59 ! logical NOT 运算符 .................................................................................................................................. 60 || logical OR 运算符 .................................................................................................................................... 60 % modulo 运算符 ...................................................................................................................................... 61 %= modulo assignment 运算符 ................................................................................................................ 61 * multiplication 运算符............................................................................................................................... 61 *= multiplication assignment 运算符......................................................................................................... 62 :: name qualifier 运算符 ............................................................................................................................. 62 new 运算符................................................................................................................................................ 63 {} object initializer 运算符 ........................................................................................................................... 63 () parentheses 运算符 ................................................................................................................................ 64 ActionScript 语法参考手册 4 ( ) parentheses (XML) 运算符..................................................................................................................... 64 / RegExp delimiter 运算符.......................................................................................................................... 65 === strict equality 运算符.......................................................................................................................... 65 !== strict inequality 运算符........................................................................................................................ 66 " string delimiter 运算符 ............................................................................................................................. 67 - subtraction 运算符.................................................................................................................................. 67 -= subtraction assignment 运算符............................................................................................................ 67 : type 运算符 .............................................................................................................................................. 68 typeof 运算符............................................................................................................................................. 68 void 运算符 ................................................................................................................................................ 69 < > XML literal tag delimiter 运算符 .......................................................................................................... 69 二、语法........................................................................................................................................ 70 ... (rest) parameter 定义关键字 .................................................................................................................. 70 AS3 命名空间............................................................................................................................................. 71 break 语句.................................................................................................................................................. 71 case 语句 ................................................................................................................................................... 72 class 定义关键字........................................................................................................................................ 72 const 定义关键字 ....................................................................................................................................... 74 continue 语句............................................................................................................................................. 74 default 语句................................................................................................................................................ 75 default xml namespace 指令 ..................................................................................................................... 75 do..while 语句 ............................................................................................................................................ 76 dynamic 属性关键字 .................................................................................................................................. 77 else 语句 .................................................................................................................................................... 77 extends 定义关键字 ................................................................................................................................... 78 false 主表达式关键字 ................................................................................................................................. 79 final 属性关键字 ......................................................................................................................................... 79 for 语句 ...................................................................................................................................................... 80 for..in 语句 ................................................................................................................................................. 80 for each..in 语句......................................................................................................................................... 81 function 定义关键字................................................................................................................................... 81 get 定义关键字........................................................................................................................................... 82 if 语句......................................................................................................................................................... 83 import 指令 ................................................................................................................................................ 83 include 指令 ............................................................................................................................................... 84 interface 定义关键字.................................................................................................................................. 84 internal 属性关键字 .................................................................................................................................... 84 label 语句 ................................................................................................................................................... 85 namespace 定义关键字 ............................................................................................................................. 85 native 属性关键字 ...................................................................................................................................... 86 null 主表达式关键字 ................................................................................................................................... 86 override 属性关键字................................................................................................................................... 87 package 定义关键字................................................................................................................................... 87 private 属性关键字 ..................................................................................................................................... 87 protected 属性关键字 ................................................................................................................................ 88 public 属性关键字 ...................................................................................................................................... 89 ActionScript 语法参考手册 5 return 语句................................................................................................................................................. 90 set 定义关键字........................................................................................................................................... 90 static 属性关键字 ....................................................................................................................................... 91 super 语句 ................................................................................................................................................. 92 switch 语句................................................................................................................................................ 93 this 主表达式关键字................................................................................................................................... 93 throw 语句 ................................................................................................................................................. 94 true 主表达式关键字 .................................................................................................................................. 95 try..catch..finally 语句................................................................................................................................. 95 use namespace 指令 ................................................................................................................................. 97 var 定义关键字........................................................................................................................................... 98 while 语句.................................................................................................................................................. 98 with 语句 ................................................................................................................................................... 99 三、函数 ...................................................................................................................................... 100 Array () 函数 ............................................................................................................................................. 100 Boolean () 函数 ........................................................................................................................................ 101 Date () 函数.............................................................................................................................................. 101 decodeURI () 函数.................................................................................................................................... 101 decodeURIComponent () 函数................................................................................................................. 102 encodeURI () 函数.................................................................................................................................... 103 encodeURIComponent () 函数................................................................................................................. 103 escape () 函数 .......................................................................................................................................... 104 int () 函数 ................................................................................................................................................. 104 isFinite () 函数 .......................................................................................................................................... 104 isNaN () 函数............................................................................................................................................ 104 isXMLName () 函数.................................................................................................................................. 105 Number () 函数 ........................................................................................................................................ 105 Object () 函数........................................................................................................................................... 105 parseFloat () 函数..................................................................................................................................... 105 parseInt () 函数 ........................................................................................................................................ 106 String () 函数 ............................................................................................................................................ 106 trace () 函数 ............................................................................................................................................. 106 uint () 函数 ............................................................................................................................................... 107 unescape () 函数 ...................................................................................................................................... 107 XML () 函数.............................................................................................................................................. 107 XMLList () 函数 ........................................................................................................................................ 107 ActionScript 语法参考手册 6 一、AS 3.0 运算符 + addition 运算符 加上数字表达式。两个表达式都为整数时,和为整数;其中一个或两个表达式为浮点数时,和为浮点数。 用法 expression1 + expression2 操作数 expression1:Number — 要加上的值。 expression2:Number — 要加上的值。 结果 Number — 一个整数或浮点数。 示例 下面的语句将整数 2 和 3 相加: trace(2 + 3); // 5 下面的语句将浮点数 2.5 与 3.25 相加: trace(2.5 + 3.25); // 5.75 += addition assignment 运算符 对 expression1 赋予 expression1 + expression2 的值。例如,下面两个语句的结果是相同的: 用法 expression1 += expression2 操作数 expression1:Number — 一个数字。 expression2:Number — 一个数字。 结果 Number — 加法运算的结果。 示例 下例说明加法赋值运算符 (+=) 的数值用法: var x:Number = 5; var y:Number = 10; x += y; trace(x); // 15 [] array access 运算符 用指定的元素(a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。数组访问运算符使您能够动态地 设置和检索实例、变量和对象的名称。它还使您能够访问对象属性。 用法 myArray = [a0, a1,...aN] myArray[i] = value myObject[propertyName] ActionScript 语法参考手册 7 操作数 myArray:Object — 数组的名称。 a0, a1,...aN:Object — 数组中的元素;任何本机类型或对象实例,包括嵌套的数组。 i:Number — 大于等于 0 的整数索引。 myObject:Object — 对象的名称。 propertyName:String — 为对象的属性命名的字符串。 示例 下例说明创建新的空 Array 对象的两种方法; 第一行使用方括号: var my_array:Array = []; var my_array:Array = new Array(); as 运算符 计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。如果第一个操作数是该数据类型的 成员,则结果为第一个操作数。否则,结果为 null 值。 用法 expression as datatype 操作数 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 运算符 将 expression2(右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。可以按值也可以按引用进 行赋值。按值进行赋值将复制 expression1 的实际值并将其存储在 expression2 中。当 expression2 是原始值时(这 意味着它的数据类型为 Boolean、Number、int、uint 或 String),使用按值进行赋值。按引用进行赋值将把对 expression2 的引用存储在 expression1 中。按引用进行赋值通常与 new 运算符一起使用。new 运算符将在内存中 创建一个对象,并将对内存中该位置的引用分配给一个变量。 用法 expression1 = expression2 注意:在 ActionScript 3.0 中,所有的值(包括原始值)都是对象,所有的赋值都通过引用来完成,但是原始对象 具有一些特殊运算符,这些运算符使它们如同进行了按值赋值。 操作数 expression1:* — 变量、数组元素或对象的属性。 expression2:* — 任何类型的值。 ActionScript 语法参考手册 8 结果 Object — 赋予的值 expression2。 示例 下面的示例使用按值进行赋值,将值 5 赋予变量 z。 var z:Number = 5; @ attribute identifier 运算符 标识 XML 或 XMLList 对象的属性。例如,myXML.@id 标识 myXML XML 对象的名为 id 的属性。还可以使 用下面的语法来访问属性:myXML.attribute("id")、myXML["@id"] 和 myXML.@["id"]。建议使用 myXML.@id 语法。 若要返回所有属性名的 XMLList 对象,请使用 @*。若要返回名称与 ActionScript 保留字相匹配的属性,请使用 attribute() 方法,而不要使用 @ 运算符。 用法 myXML.@attributeName 操作数 attributeName:* — 属性的名称。 示例 第一个示例说明如何使用 @(at 符号)运算符来标识元素的属性: var myXML:XML = Presta tube 3.99 ; trace(myXML.@id); // 42 & bitwise AND 运算符 用法 expression1 & expression2 将 expression1 和 expression2 转换为 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; ActionScript 语法参考手册 9 var update:Number = 11; trace(insert & update); // 9 &= bitwise AND assignment 对 expression1 赋予 expression1 & expression2 的值。 用法 expression1 &= expression2 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 int — expression1 & expression2 的值。 示例 下例将值 9 赋予 x: var x:Number = 15; var y:Number = 9; trace(x &= y); // 9 << bitwise left shift 运算符 将 expression1 和 shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动由 shiftCount 转换 所得到的整数指定的位数。因执行此运算而空出的位的位置将用 0 填充,移出左端的位将被舍去。将一个值向左侧移 动一位与这个值乘以 2 等效。 浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度 更高的 2 的补码,然后舍去最高有效位。 由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。 如果结果是负整数,那么,当您试图将结果赋予类型为 uint 的变量时,会出现运行时错误。 用法 expression1 << shiftCount 操作数 expression1:Number — 要向左移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。 结果 int — 按位运算的结果。 示例 整数 7 向左移 8 位: x = 7 << 8 按位左移位运算的结果是 1792。这是因为十进制的 7 等于二进制的 111,二进制的 111 向左移 8 位 是二进制的 11100000000,而二进制的 11100000000 就是十进制的 1792: 二进制的 00000000111 << 十进制的 8 -------------- 二进制的 11100000000 等于十进制的 1792 下面的 trace 语句说明已经将位向左移三位: // 1 binary == 0001 // 8 binary == 1000 ActionScript 语法参考手册 10 trace(1 << 3); // 8 <<= bitwise left shift and assignment 运算符 执行按位向左移位 (<<=) 运算,并将内容作为结果存储在 expression1 中。 用法 expression1 <<= expression2 操作数 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 转换为一个 32 位带符号整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并 将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。此运算符也称为对一求补运算符或按位求补运算 符。 用法 ~expression 例如,十六进制值 0x7777 表示为二进制数: 0111011101110111 该十六进制值 ~0x7777 的按位取反的二进制数为: 1000100010001000 在十六进制中,它是 0x8888。因此,~0x7777 就是 0x8888。 操作数 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, ActionScript 语法参考手册 11 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 转换为 32 位无符号整数,并在 expression1 或 expression2 的对应位为 1 的每个位的位置上放置 1。 用法 expression1 | expression2 操作数 expression1:Number — 一个数字。 expression2:Number — 一个数字。 结果 int — 按位运算的结果。 示例 下面是一个按位 OR (|) 运算的示例: // 15 decimal = 1111 binary var a:Number = 15; // 9 decimal = 1001 binary var b:Number = 9; |= bitwise OR assignment 运算符 对 expression1 赋予 expression1 / expression2 的值。 用法 expression1 |= expression2 操作数 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) ActionScript 语法参考手册 12 >> bitwise right shift 运算符 将 expression 和 shiftCount 转换为 32 位整数,并将 expression 中的所有位向右移动由 shiftCount 转换所 得到的整数指定的位数。移到右端以外的位将被舍去。如果要保留原始表达式的符号,那么,当 expression 的最高有 效位(最左端的位)为 0 时,左侧的位都填补 0;如果最高有效位为 1,左侧的位都填补 1。将一个值右移一位等效 于将它除以 2 并舍去余数。 用法 expression >> shiftCount 操作数 expression:Number — 要向右移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。 结果 int — 按位运算的结果。 示例 下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255: var a:Number = 65535 >> 8; trace(a); // 255 >>= bitwise right shift and assignment 运算符 执行按位向右移位运算,并将结果存储在 expression 中。 用法 expression >>= shiftCount 操作数 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. ActionScript 语法参考手册 13 >>> bitwise unsigned right shift 运算符 此运算符与按位向右移位运算符 (>>) 基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。 用法 expression >>> shiftCount 注意: ActionScript 没有“无符号按位向左移位”补充运算符,但是您可以通过使用 uint(expression << shiftCount) 来获得同样的效果。 操作数 expression:Number — 要向右移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间的整数的数字或表达式。 结果 uint — 按位运算的结果。 示例 下例将 -1 转换为 32 位整数并向右移 1 位: var a:Number = -1 >>> 1; trace(a); // 2147483647 >>>= bitwise unsigned right shift and assignment 运算符 执行无符号按位向右移位运算,并将结果存储在 expression 中。 用法 expression >>>= shiftCount 操作数 expression:Number — 要向右移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。 结果 uint — 按位运算的结果。 示例 下例将 -1 转换为 32 位整数并向右移 1 位: var a:Number = -1; a >>>= 1; trace(a); // 2147483647 ^ bitwise XOR 运算符 将 expression1 和 expression2 转换为 32 位无符号整数,并在 expression1 或 expression2 中对应位为 1 (但不是在两者中均为 1)的每个位的位置上放置 1。 用法 expression1 ^ expression2 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 ActionScript 语法参考手册 14 结果 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 赋予 expression1 ^ expression2 的值。 用法 expression1 ^= expression2 操作数 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 *//* comment comment */ 操作数 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; ActionScript 语法参考手册 15 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) 运算符 计算在 XML 或 XMLList 初始值设定项中使用的表达式。XML 或 XMLList 初始值是赋予类型为 XML 或 XMLList 的变量的字面值。由 XML { 和 } 运算符隔开的表达式可以用在 XML 或 XMLList 初始值中,而不能用在 文本名称或值中。可以使用表达式来代替 tagName、attributeName、attributeValue 和 content。 用法 myXML = <{tagName} {attributeName} = {attributeValue}>{content} 操作数 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}; trace(x.toXMLString()); // Chicken [ ] brackets (XML) 运算符 访问 XML 或 XMLList 对象的属性或特性。方括号运算符允许您访问不能用点运算符 (.) 访问的属性名。 用法 myXML[expression] 操作数 myXML:* — 一个 XML 或 XMLList 对象。 expression:* — 计算结果为 XML 标签名称或属性名称的表达式。 示例 下例说明如何使用 [ 和 ] 运算符来访问 而不能用点运算符访问的 XML 属性: var myXML:XML = 44; trace(myXML["foo-bar"]); , comma 运算符 计算 expression1,然后计算 expression2,依此类推。此运算符主要与 for 循环语句一起使用,并且通常与括 号 () 运算符一起使用。 ActionScript 语法参考手册 16 用法 (expression1, expression2[, expressionN... ]) 操作数 expression1:* — 要计算的表达式。 expression2:* — 要计算的表达式。 expressionN:* — 要计算的任意数目的其它表达式。 结果 Object — 所计算表达式的值。 示例 使用逗号运算符但不使用括号运算符,来说明逗号运算符的优先级低于赋值运算符 (=) 运算符: var v:Number = 0; v = 4, 5, 6; trace(v); // 4 使用逗号运算符以及括号,并说明逗号运算符返回最后一个表达式的值: var v:Number = 0; v = (4, 5, 6); trace(v); // 6 + concatenation 运算符 连接(合并)字符串。如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来。如 果这两个表达式都是数字,则该运算符充当加法运算符。 用法 expression1 + expression2 操作数 expression1:String — 要连接的字符串。 expression2:String — 要连接的字符串。 结果 String — 连接后的字符串。 示例 下例连接两个字符串。 var lastName:String = "Cola"; var instrument:String = "Drums"; trace(lastName + " plays " + instrument); // Cola plays Drums + concatenation (XMLList) 运算符 将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。只有当这两个操作数都是 XML 或 XMLList 值时, 结果才为 XMLList 对象。 用法 expression1 + expression2 操作数 expression1:* — 一个 XML 或 XMLList 值。 expression2:* — 一个 XML 或 XMLList 值。 ActionScript 语法参考手册 17 结果 XMLList — 连接起来的 XMLList 对象。 示例 下例说明如何使用 XMLList (+)(连接)运算符: var x1:XML = Joe Smith ; var x2:XML = Susan Jones ; var myXMLList:XMLList = x1 + x2; trace(myXMLList.toXMLString()); trace 语句可生成以下输出: Joe Smith Susan Jones += concatenation assignment 运算符 对 expression1 赋予 expression1 / expression2 的值。 用法 expression1 += expression2 操作数 expression1:String — 一个字符串。 expression2:String — 一个字符串。 结果 Number — 连接运算的结果。 示例 下例使用 += 运算符和字符串表达式: var x1:String = "My name is "; x1 += "Gilbert"; trace(x1); // My name is Gilbert += concatenation assignment (XMLList) 运算符 对 XMLList 对象 expression1 赋予 expression1 + expression2 的值。 ActionScript 语法参考手册 18 用法 expression1 += expression2 操作数 expression1:XMLList — 要向其中添加新值的 XMLList 对象。 expression2:* — 一个 XML 或 XMLList 值。 示例 下例说明如何使用 XMLList 连接赋值运算符 (+=): var x1:XML = Athens; var x2:XML = Paris; myXMLList = x1 + x2; var x3:XML = Springfield; myXMLList += x3; trace(myXMLList.toXMLString()); trace 语句可生成以下输出: Athens Paris Springfield ?: conditional 运算符 计算 expression1,如果 expression1 的值为 true,则结果为 expression2 的值;否则,结果为 expression3 的 值。 用法 expression1 ? expression2 : expression3 操作数 expression1:Boolean — 计算结果为布尔值的表达式;通常为像 x < 5 这样的比较表达式。 expression2:* — 任何类型的值。 expression3:* — 任何类型的值。 结果 * — expression2 或 expression3 的值。 示例 下面的语句将变量 x 的值赋予变量 z,因为第一个表达式的计算结果是 true: var x:Number = 5; var y:Number = 10; var z = (x < 6) ? x: y; trace(z); // returns 5 -- decrement 运算符 操作数减去 1。该操作数可以是变量、数组中的元素或对象的属性。此运算符的预先递减格式 (--expression) 从 expression 中减去 1,然后返回结果。此运算符的滞后递减格式 (expression--) 从 expression 中减去 1,然后返 回 expression 的初始值(即减去 1 之前的值)。 用法 --expressionexpression-- ActionScript 语法参考手册 19 操作数 expression:Number — 一个数字或计算结果为数字的变量。 结果 Number — 被递减的值的结果。 示例 此运算符的预先递减格式将 x 递减为 2 (x - 1 = 2),并将结果作为 y 返回: var x:Number = 3; var y:Number = --x; // y is equal to 2 delete 运算符 破坏由 reference 指定的对象属性;如果在运算完成后该属性不存在,则结果为 true;否则,结果为 false。如 果对不存在的属性或类中未定义的动态属性调用 delete 运算符,则该运算符返回 true。 用法 删除引用 注意:尽管不能删除对象,但是可以通过删除对某个对象的所有引用来使该对象符合垃圾回收条件。对某个对象 最常见的引用就是指向该对象的变量。可以通过将该变量设置为 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 delete (XML) 运算符 在与 XMLList 操作数一起使用时,delete 运算符的结果总是为 true,因为 XMLList 操作数总是引用有效(尽 管有可能为空)的 XMLList 对象。 用法 删除引用 删除由 reference 指定的 XML 元素或属性。 操作数 reference:XMLList — 用来指定要删除的 XML 元素或属性的 XMLList 对象。 ActionScript 语法参考手册 20 结果 Boolean — 如果删除成功,则值为 true;如果删除失败,则值为 false。 示例 删除某个元素的所有内容(包括属性和子元素),而不删除该元素本身: var xml:XML = hamburger fries chocolate shake ; delete xml.item[1].*; delete xml.item[1].@*; trace(xml); 此示例的输出如下所示: hamburger chocolate shake ... descendant accessor 运算符 定位到 XML 或 XMLList 对象的后代元素,或(结合使用 @ 运算符)查找匹配的后代属性。匹配元素或属性不 必是 XML 或 XMLList 对象的子级,它们可以位于树中的更低位置(例如,孙级)。结果是 XMLList 对象,因为有 多个子元素或子属性可以匹配。 用法 myXML..childElement1..@attributeName 操作数 myXML:Object — XML 或 XMLList 对象。 childElement1_or_attributeName — XML 属性的名称或某个特性的名称。 示例 下例说明如何使用后代存取器运算符 (..) 返回 XML 对象的后代元素以及元素的属性: var myXML:XML = Billy Einstein Sally Shostakovich trace(myXML..firstName); // Billy ActionScript 语法参考手册 21 // Sally 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 赋予 expression1 / expression2 的值。 用法 expression1 /= expression2 操作数 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:* — 与对象相关联的属性或方法的名称。内置类的所有有效方法和属性都会在该类的方法 和属性摘要表中列出。此操作数总是在点 (.) 运算符的右侧。 ActionScript 语法参考手册 22 结果 * — 在点右侧命名的变量、方法或属性。 示例 创建一个通用对象并使用点运算符来添加新属性。 var obj:Object = new Object(); obj.propertyA = "hello"; trace(obj.propertyA); // hello . dot (XML) 运算符 定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。返回 的对象是 XMLList,因为有多个子元素或子属性可以匹配。若要返回名称与 ActionScript 保留字相匹配的元素,请使 用 XML.elements() 方法或 XML.descendants() 方法,而不要使用 XML 点 (.) 运算符. 用法 myXML.childElement myXML.@attributeName 操作数 myXML:Object — XML 或 XMLList 对象。 childElement:* — XML 属性的名称。 attributeName:* — 属性的名称。 结果 XMLList — 指定的 XMLList。 示例 下例说明如何使用点 (.) 运算符来返回 XML 对象的子元素以及元素的属性: var myXML:XML = Billy Einstein ; trace(myXML.firstName); // Billy trace(myXML.@id); // 42 == equality 运算符 测试两个表达式是否相等。如果表达式相等,则结果为 true。 用法 expression1 == expression2 操作数 expression1:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。 expression2:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。 结果 Boolean — 如果这两个表达式相等,则值为 true,否则为 false。 示例 下例将等于运算符 (==) 与 if 语句结合使用: var a:String = "David" ActionScript 语法参考手册 23 var b:String = "David"; if (a == b) { trace("David is David"); } > greater than 运算符 比较两个表达式,并确定 expression1 是否大于 expression2;如果是,则结果为 true。如果 expression1 小 于等于 expression2,则此运算符返回 false。 用法 expression1 > expression2 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 大于 expression2,则值为 true,否则为 false。 示例 下例说明按字母顺序对字符串进行比较,大写字符排在小写字母的前面: var a:String = "first"; var b:String = "First"; trace(a > b); // true >= greater than or equal to 运算符 比较两个表达式,并确定 expression1 是大于等于 expression2 (true),还是 expression1 小于 expression2 (false)。 用法 expression1 >= expression2 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 大于等于 expression2,则值为 true,否则为 false。 示例 大于等于运算符 (>=) 用于确定当前小时是否大于等于 12: if (new Date().getHours() >= 12) { trace("good afternoon"); } else { trace("good morning"); } in 运算符 计算属性是否为特定对象的一部分。若要使用 in 运算符,请将属性名指定为第一个操作数,并将对象指定为第二 ActionScript 语法参考手册 24 个操作数。如果指定的对象包含这样的属性,则结果为 true,否则结果为 false。 用法 expression1 in expression2 示例 下例使用 in 运算符来说明 PI 是 Math 对象的属性,而 myProperty 却不是。 trace("PI" in Math); // true trace("myProperty" in Math); // false ++ increment 运算符 将表达式加 1。该表达式可以是变量、数组中的元素或对象的属性。运算符的预先递增格式 (++expression) 将 expression 加 1,然后返回结果。此运算符的滞后递增格式 (expression++) 将 1 与 expression 相加,然后返回 expression 的初始值(即相加之前的值)。 用法 ++expression expression++ 操作数 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 != inequality 运算符 测试结果与等于运算符 (==) 正好相反。如果 expression1 等于 expression2,则结果为 false。与等于运算符 (==) 一样,相等的定义取决于所比较的数据类型。 用法 expression1 != expression2 操作数 expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 结果 Boolean — 如果表达式不相等,则值为 true,否则为 false。 示例 下例说明不等于运算符 (!=) 的结果: trace(5 != 8); // true trace(5 != 5); // false 按引用比较两个数组: ActionScript 语法参考手册 25 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 运算符 计算表达式的原型链是否包括 function 的原型对象。之所以包括 instanceof 运算符,是为了与 ECMAScript 3.0 版保持向后兼容,它对于选择用带构造函数的基于原型的继承来代替类继承的高级程序员可能非常有用。 用法 expression instanceof function 注意: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 运算符 计算对象是否与特定数据类型、类或接口兼容。使用 is 运算符(而非 instanceof 运算符)进行类型比较。还可 以使用 is 运算符来检查对象是否实现某个接口。 用法 expression1 is expression2 结果 Boolean — 如果 expression1 与在 expression2 中指定的数据类型、类或接口兼容,则为 true,否则为 false。 示例 下例创建名为 mySprite 的 Sprite 类的一个实例,并使用 is 运算符来测试 mySprite 是否为 Sprite 和 ActionScript 语法参考手册 26 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;如果是,则结果为 true。如果 expression1 大 于等于 expression2,则结果为 false。如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字 母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。 用法 expression1 < expression2 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 小于 expression2,则值为 true,否则为 false。 示例 下例说明为数值和字符串比较返回的 true 和 false: 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;如果是,则结果为 true。如果 expression1 大于 expression2,则结果为 false。如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母 都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。 用法 expression1 <= expression2 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 小于等于 expression2,则值为 true,否则为 false。 ActionScript 语法参考手册 27 示例 下例说明为数值和字符串比较返回的 true 和 false: 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 为 false 或可以转换为 false,则返回该表达式;否则,返回 expression2。可以转换为 false 的值的示例有 0、NaN、null 和 undefined。如果将函数调用用作 expression2,那么,当 expression1 的计算结果 为 false 时,将不调用该函数。 用法 expression1 && expression2 操作数 expression1:* — 任何类型的值或表达式。 expression2:* — 任何类型的表达式的值。 结果 * — 如果这两个操作数的类型均为 Boolean,则结果为布尔值。否则,结果为任一表达式的值。 示例 使用逻辑 AND 运算符 (&&) 执行一个测试,确定游戏者是否已经赢得游戏。在游戏过程中,当游戏者赢得一轮 或者得到计分点时,就会更新变量 turns 和 score。在 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 { ActionScript 语法参考手册 28 trace("Try Again!"); } ! logical NOT 运算符 对变量或表达式的布尔值取反。如果 expression 是具有绝对的或经过转换的值 true 的变量,则 !expression 的 值为 false。如果表达式 x && y 的计算结果为 false,则表达式 !(x && y) 的计算结果为 true。 用法 !expression 操作数 expression:Boolean — 计算结果为布尔值的表达式或变量。 结果 Boolean — 逻辑运算的布尔结果。 示例 变量 happy 设置为 false。if 条件计算 !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 为 true 或可以转换为 true,则返回该表达式;否则,返回 expression2。如果将函数调用用 作 expression2,那么,当 expression1 的计算结果为 true 时,将不调用该函数。 用法 expression1 || expression2 操作数 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 测试通过”消息。 % modulo 运算符 计算 expression1 除以 expression2 的余数。如果有任一操作数不是数字值,则模运算符 (%) 会尝试将它转换 为数字。模运算结果的符号与被除数(第一个数字)的符号相匹配。例如,-4 % 3 和 -4 % -3 的计算结果都为 -1。 ActionScript 语法参考手册 29 用法 expression1 % expression2 操作数 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 赋予 expression1 / expression2 的值。 用法 expression1 %= expression2 操作数 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: ActionScript 语法参考手册 30 trace(2*3); // 6 *= multiplication assignment 运算符 对 expression1 赋予 expression1 * expression2 的值。 用法 expression1 *= expression2 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 Number — expression1 * expression2 的值。如果表达式不能转换为数值,则返回 NaN(非数字)。 示例 下面的示例将值 50 赋予变量 a: var a:Number = 5; var b:Number = 10; trace(a *= b); // 50 :: name qualifier 运算符 标识属性、方法或 XML 属性或特性的命名空间。 用法 namespace::propertynamespace::method()namespace::xmlObject.propertynamespace::xmlObject.@attribute 操作数 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"; } } new 运算符 对类实例进行实例化。new 运算符可以与类型为 Class 的变量一起用来创建类的实例。new 运算符通常与 class ActionScript 语法参考手册 31 对象一起用来创建类的实例。例如,语句 new Sprite() 创建 Sprite 类的实例。 new 运算符还可用来将类与嵌入的资源(这是编译为 SWF 文件的外部对象,如图像、声音或字体)。每个嵌入 资源都由一个唯一的嵌入资源类表示。若要访问嵌入资源,必须使用 new 运算符来实例化与其关联的类。因此,可 以调用嵌入资源类的相应方法和属性来处理嵌入资源。 用法 new constructor(parameters) 操作数 constructor:* — 一个类、函数或变量,可用来保存类型为 Class 的值。 parameters:* — 一个或多个用逗号分隔的参数。 示例 创建 Book 类,然后使用 new 运算符来创建对象 book1 和 book2。 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] {} object initializer 运算符 创建一个新对象,并用指定的 name 和 value 属性对初始化该对象。使用此运算符的效果与使用 new Object 语 法并用赋值运算符填充属性对的效果相同。新建对象的原型通常命名为 Object 对象。 用法 object = {name1 : value1, name2 : value2,... nameN : valueN} 操作数 object:Object — 要创建的对象。 name1,2,...N:Object — 属性名。 value1,2,...N:Object — 每个 name 属性的对应值。 结果 Object — 一个 Object 对象。 示例 下面代码的第一行用对象初始值设定项 ({}) 运算符创建一个空对象;第二行用构造函数创建一个新对象。 var object:Object = {}; var object:Object = new Object(); () parentheses 运算符 对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括 ActionScript 语法参考手册 32 号前面的函数。 用法 (expression1[, expression2])(expression1, expression2)function(parameter1,..., parameterN) 操作数 expression1:Object — 一个表达式,可以包括数字、字符串、变量或文本。 expression2:Object — 一个表达式,可以包括数字、字符串、变量或文本。 function:Function — 要对括号中的内容执行的函数。 parameter1...parameterN:Object — 一系列参数,在将结果作为参数传递给括号外的函数之前执行这些参数。 示例 如何使用括号来控制表达式的执行顺序: trace((2 + 3) * (4 + 5)); // 45 trace(2 + (3 * (4 + 5))); // 29 trace(2 + (3 * 4) + 5); // 19 trace(2 + (3 * 4) + 5); // 19 ( ) parentheses (XML) 运算符 计算 ECMAScript for XML (E4X) XML 构造中的表达式。例如,myXML.(lastName == "Smith") 标识名为 lastName 且值为 "Smith" 的 XML 元素。结果为 XMLList 对象。 用法 myXML.(expression) 操作数 myXML:* — 一个 XML 或 XMLList 对象。 expression:* — 用来定义匹配元素的表达式。 结果 XMLList — 由括号指定的 XMLList。 示例 下例说明如何使用括号来标识元素和属性: var myXML:XML = Joe Smith Susan Jones Anne Smith ; trace(myXML.employee.(lastName == "Smith").@id.toXMLString()); // 42 ActionScript 语法参考手册 33 // 44 trace(myXML.employee.(Number(@id) > 42).@id.toXMLString()); // 43 // 44 / RegExp delimiter 运算符 如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (RegExp),而不是一个变量、字符 串或其它 ActionScript 元素。但是,请注意,两个连续的正斜杠字符 (//) 表示注释开始。 用法 /pattern/flags 操作数 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 运算符 测试两个表达式是否相等,但不执行自动数据转换。如果两个表达式(包括它们的数据类型)相等,则结果为 true。 用法 expression1 === expression2 全等运算符 (===) 与等于运算符 (==) 在以下三个方面相同: 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两 个单独的数组即使具有相同数量的元素,也永远不会被视为相等。 全等运算符 (===) 与等于运算符 (==) 仅在以下两个方面不同: 全等运算符仅针对数字类型(Number、int 和 uint)执行自动数据转换,而等于运算符 () 针对所有的原始数据 类型执行自动数据转换。 在对 null 和 undefined 进行比较时,全等运算符返回 false。 在对两个包含相同值的原始对象进行比较时,在 ActionScript 3.0 中将生成 true,但在早期版本中将生成 false。 操作数 expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 结果 Boolean — 比较的布尔结果。 示例 下例说明当值和数据类型都匹配时,全等运算符 (===) 与等于运算符 (==) 相同: ActionScript 语法参考手册 34 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 !== strict inequality 运算符 测试结果与全等运算符 (===) 正好相反。除了仅转换 int 和 uint 数据类型外,不全等运算符执行的运算与不等 于运算符相同。如果 expression1 等于 expression2,并且它们的数据类型相等,则结果为 false。 用法 expression1 !== expression2 不全等运算符 (!==) 与不等于运算符 (!=) 在以下三个方面相同: 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两 个单独的数组即使具有相同数量的元素,也永远不会被视为相等。 不全等运算符与不等于运算符 (!=) 仅在以下两个方面不同: 不全等运算符 (!==) 仅针对数字类型(Number、int 和 uint)执行自动数据转换,而不等于运算符 (!=) 针对所 有的原始数据类型执行自动数据转换。 在对 null 和 undefined 进行比较时,不全等运算符 (!==) 返回 true。 操作数 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 ActionScript 语法参考手册 35 trace(s1 !== s2); // false trace(s1 !== s3); // true trace(s1 !== n); // true trace(s1 !== b); // true " string delimiter 运算符 如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其它 ActionScript 元素。 用法 "text" 操作数 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 用法 1:用于执行求反时,该运算符将数值表达式的符号反转。 用法 2:用于减法时,该运算符对两个数值表达式执行算术减法运算,从 expression1 中减去 expression2。两 个表达式都为整数时,差为整数。其中任何一个或两个表达式为浮点数时,差为浮点数。 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 Number — 一个整数或浮点数。 示例 用法 1:下面的语句将表达式 2 + 3 的符号反转: trace(-(2 + 3)); // -5 用法 2:下面的语句从整数 5 中减去整数 2: trace(5 - 2); // 3 结果为一个整数 3。 -= subtraction assignment 运算符 对 expression1 赋予 expression1 / expression2 的值。 用法 expression1 -= expression2 ActionScript 语法参考手册 36 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 Number — 算术运算的结果。 示例 使用减法赋值运算符 (-=) 从 5 中减去 10,然后将结果赋予变量 x: var x:Number = 5; var y:Number = 10; x -= y; trace(x); // -5 : type 运算符 用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。在变量声明或赋值中使用时,此 运算符指定变量的类型;在函数声明或定义中使用时,此运算符指定函数的返回类型;在函数定义中与函数参数一起 使用时,此运算符指定该参数预期的变量类型。 用法 [modifiers] var variableName:typefunction functionName():type { ...}function functionName(parameter1:type, ..., parameterN:type) [:type]{ ... } 操作数 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 运算符 计算 expression 并返回一个指定表达式的数据类型的字符串。结果限制在六个可能的字符串值:boolean、 function、number、object、string 和 xml。如果向用户定义的类应用此运算符,则结果为字符串 object。之所以包 ActionScript 语法参考手册 37 括 typeof 运算符是为了向后兼容。使用 is 运算符可以检查类型是否兼容。 用法 typeof expression 操作数 expression:Object — 一个要计算的对象。 结果 String — 类型为 expression 的字符串表示形式。下表说明对各个类型的表达式使用 typeof 运算符的结果。 表达式类型 结果 Array object Boolean boolean Function function int 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 void 运算符 计算表达式,然后放弃其值,返回 undefined。void 运算符通常用在一些比较中,这些比较使用 == 运算符来测 试未定义的值。 用法 void expression 操作数 expression:Object — 要计算的表达式。 结果 * — 值 undefined。 < > XML literal tag delimiter 运算符 用法 myXML = <{tagName} {attributeName} = {attributeValue}>{content} 在 XML 文本中定义 XML 标签。使用正斜杠 / 可以定义结束标签。 操作数 myXML:* — 一个 XML 或 XMLList 对象。 tagName:* — 计算结果为 XML 标签名称的表达式。 attributeName:* — 计算结果为 XML 属性名称的表达式。 attributeValue:* — 计算结果为 XML 属性值的表达式。 ActionScript 语法参考手册 38 content:* — 计算结果为 XML 标签内容的表达式。 示例 如何使用 < 和 > 运算符来定义 XML 文本: var x:XML = cola; + 运算符 加上数字表达式 说明 两个表达式都为整数时,和为整数;其中一个或两个表达式为浮点数时,和为浮点数。 用法 expression1 + expression2 操作数 expression1:Number — 要加上的值。 expression2:Number — 要加上的值。 结果 Number — 一个整数或浮点数。 示例 下面的语句将整数 2 和 3 相加: trace(2 + 3); // 5 下面的语句将浮点数 2.5 与 3.25 相加: trace(2.5 + 3.25); // 5.75 += 说明 对 expression1 赋予 expression1 + expression2 的值。 用法 expression1 += expression2 操作数 expression1:Number — 一个数字。 expression2:Number — 一个数字。 结果 Number — 加法运算的结果。 示例 下例说明加法赋值运算符 (+=) 的数值用法: var x:Number = 5; var y:Number = 10; x += y; trace(x); // 15 [] 说明 用指定的元素(a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。数组访问运算符使您能够动态地 ActionScript 语法参考手册 39 设置和检索实例、变量和对象的名称。它还使您能够访问对象属性。 用法 myArray = [a0, a1,...aN] myArray[i] = value myObject[propertyName] 操作数 myArray:Object — 数组的名称。 a0, a1,...aN:Object — 数组中的元素;任何本机类型或对象实例,包括嵌套的数组。 i:Number — 大于等于 0 的整数索引。 myObject:Object — 对象的名称。 propertyName:String — 为对象的属性命名的字符串。 示例 下例说明创建新的空 Array 对象的两种方法; 第一行使用方括号: var my_array:Array = []; var my_array:Array = new Array(); as 运算符 计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。如果第一个操作数是该数据类型的 成员,则结果为第一个操作数。否则,结果为 null 值。 用法 expression as datatype 操作数 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 运算符 将 expression2(右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。可以按值也可以按引用进 行赋值。按值进行赋值将复制 expression1 的实际值并将其存储在 expression2 中。当 expression2 是原始值时(这 意味着它的数据类型为 Boolean、Number、int、uint 或 String),使用按值进行赋值。按引用进行赋值将把对 expression2 的引用存储在 expression1 中。按引用进行赋值通常与 new 运算符一起使用。new 运算符将在内存中 创建一个对象,并将对内存中该位置的引用分配给一个变量。 用法 expression1 = expression2 注意:在 ActionScript 3.0 中,所有的值(包括原始值)都是对象,所有的赋值都通过引用来完成,但是原始对象 ActionScript 语法参考手册 40 具有一些特殊运算符,这些运算符使它们如同进行了按值赋值。 操作数 expression1:* — 变量、数组元素或对象的属性。 expression2:* — 任何类型的值。 结果 Object — 赋予的值 expression2。 示例 下面的示例使用按值进行赋值,将值 5 赋予变量 z。 var z:Number = 5; @ attribute identifier 运算符 标识 XML 或 XMLList 对象的属性。例如,myXML.@id 标识 myXML XML 对象的名为 id 的属性。还可以使 用下面的语法来访问属性:myXML.attribute("id")、myXML["@id"] 和 myXML.@["id"]。建议使用 myXML.@id 语法。 若要返回所有属性名的 XMLList 对象,请使用 @*。若要返回名称与 ActionScript 保留字相匹配的属性,请使用 attribute() 方法,而不要使用 @ 运算符。 用法 myXML.@attributeName 操作数 attributeName:* — 属性的名称。 示例 第一个示例说明如何使用 @(at 符号)运算符来标识元素的属性: var myXML:XML = Presta tube 3.99 ; trace(myXML.@id); // 42 & bitwise AND 运算符 用法 expression1 & expression2 将 expression1 和 expression2 转换为 32 位无符号整数,并对整数参数的每一位执行布尔 AND 运算。浮点 数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。 正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍 去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。 由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 int — 按位运算的结果。 ActionScript 语法参考手册 41 示例 下例通过比较数字的位表示形式来针对 13(二进制的 1101) 和 11(二进制的 1011)执行按位 AND 运算。所 得到的整数由一系列位组成,只有当位于同一位置的操作数的位都是 1 时,所得到整数中的每一位才设置为 1。 var insert:Number = 13; var update:Number = 11; trace(insert & update); // 9 &= bitwise AND assignment 对 expression1 赋予 expression1 & expression2 的值。 用法 expression1 &= expression2 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 int — expression1 & expression2 的值。 示例 下例将值 9 赋予 x: var x:Number = 15; var y:Number = 9; trace(x &= y); // 9 << bitwise left shift 运算符 将 expression1 和 shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动由 shiftCount 转换 所得到的整数指定的位数。因执行此运算而空出的位的位置将用 0 填充,移出左端的位将被舍去。将一个值向左侧移 动一位与这个值乘以 2 等效。 浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度 更高的 2 的补码,然后舍去最高有效位。 由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。 如果结果是负整数,那么,当您试图将结果赋予类型为 uint 的变量时,会出现运行时错误。 用法 expression1 << shiftCount 操作数 expression1:Number — 要向左移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。 结果 int — 按位运算的结果。 示例 整数 7 向左移 8 位: x = 7 << 8 按位左移位运算的结果是 1792。这是因为十进制的 7 等于二进制的 111,二进制的 111 向左移 8 位 是二进制的 11100000000,而二进制的 11100000000 就是十进制的 1792: ActionScript 语法参考手册 42 二进制的 00000000111 << 十进制的 8 -------------- 二进制的 11100000000 等于十进制的 1792 下面的 trace 语句说明已经将位向左移三位: // 1 binary == 0001 // 8 binary == 1000 trace(1 << 3); // 8 <<= bitwise left shift and assignment 运算符 执行按位向左移位 (<<=) 运算,并将内容作为结果存储在 expression1 中。 用法 expression1 <<= expression2 操作数 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 转换为一个 32 位带符号整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并 将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。此运算符也称为对一求补运算符或按位求补运算 符。 用法 ~expression 例如,十六进制值 0x7777 表示为二进制数: 0111011101110111 该十六进制值 ~0x7777 的按位取反的二进制数为: 1000100010001000 在十六进制中,它是 0x8888。因此,~0x7777 就是 0x8888。 操作数 expression:Number — 要转换的数字。 结果 int — 按位运算的结果。 示例 下例说明如何将按位 NOT (~) 运算符与特征位结合使用: var ReadOnlyFlag:int = 0x0001; // defines bit 0 as the read-only flag var flags:int = 0; ActionScript 语法参考手册 43 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 转换为 32 位无符号整数,并在 expression1 或 expression2 的对应位为 1 的每个位的位置上放置 1。 用法 expression1 | expression2 操作数 expression1:Number — 一个数字。 expression2:Number — 一个数字。 结果 int — 按位运算的结果。 示例 下面是一个按位 OR (|) 运算的示例 // 15 decimal = 1111 binary var a:Number = 15; // 9 decimal = 1001 binary var b:Number = 9; |= bitwise OR assignment 运算符 对 expression1 赋予 expression1 / expression2 的值。 用法 expression1 |= expression2 操作数 expression1:Number — 要转换的数字。 expression2:Number — 要转换的数字。 结果 int — 按位运算的结果。 示例 下例使用按位 OR 赋值运算符 (|=): // 15 decimal = 1111 binary ActionScript 语法参考手册 44 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 转换为 32 位整数,并将 expression 中的所有位向右移动由 shiftCount 转换所 得到的整数指定的位数。移到右端以外的位将被舍去。如果要保留原始表达式的符号,那么,当 expression 的最高有 效位(最左端的位)为 0 时,左侧的位都填补 0;如果最高有效位为 1,左侧的位都填补 1。将一个值右移一位等效 于将它除以 2 并舍去余数。 用法 expression >> shiftCount 操作数 expression:Number — 要向右移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。 结果 int — 按位运算的结果。 示例 下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255: var a:Number = 65535 >> 8; trace(a); // 255 >>= bitwise right shift and assignment 运算符 执行按位向右移位运算,并将结果存储在 expression 中。 用法 expression >>= shiftCount 操作数 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; ActionScript 语法参考手册 45 } return result; } trace(convertToBinary(479)); // Returns the string 00000000000000000000000111011111. // This string is the binary representation of the decimal number 479. >>> bitwise unsigned right shift 运算符 此运算符与按位向右移位运算符 (>>) 基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。 用法 expression >>> shiftCount 注意: ActionScript 没有“无符号按位向左移位”补充运算符,但是您可以通过使用 uint(expression << shiftCount) 来获得同样的效果。 操作数 expression:Number — 要向右移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间的整数的数字或表达式。 结果 uint — 按位运算的结果。 示例 下例将 -1 转换为 32 位整数并向右移 1 位: var a:Number = -1 >>> 1; trace(a); // 2147483647 >>>= bitwise unsigned right shift and assignment 运算符 执行无符号按位向右移位运算,并将结果存储在 expression 中。 用法 expression >>>= shiftCount 操作数 expression:Number — 要向右移位的数字或表达式。 shiftCount:Number — 转换为介于 0 和 31 之间整数的数字或表达式。 结果 uint — 按位运算的结果。 示例 下例将 -1 转换为 32 位整数并向右移 1 位: var a:Number = -1; a >>>= 1; trace(a); // 2147483647 ^ bitwise XOR 运算符 将 expression1 和 expression2 转换为 32 位无符号整数,并在 expression1 或 expression2 中对应位为 1 ActionScript 语法参考手册 46 (但不是在两者中均为 1)的每个位的位置上放置 1。 用法 expression1 ^ expression2 操作数 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 赋予 expression1 ^ expression2 的值。 用法 expression1 ^= expression2 操作数 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 *//* comment comment */ 操作数 comment:* — 任何字符。 ActionScript 语法参考手册 47 示例 下面的脚本在脚本的开头使用块注释分隔符: /* 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) 运算符 计算在 XML 或 XMLList 初始值设定项中使用的表达式。XML 或 XMLList 初始值是赋予类型为 XML 或 XMLList 的变量的字面值。由 XML { 和 } 运算符隔开的表达式可以用在 XML 或 XMLList 初始值中,而不能用在 文本名称或值中。可以使用表达式来代替 tagName、attributeName、attributeValue 和 content。 用法 myXML = <{tagName} {attributeName} = {attributeValue}>{content} 操作数 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}; trace(x.toXMLString()); // Chicken [ ] brackets (XML) 运算符 访问 XML 或 XMLList 对象的属性或特性。方括号运算符允许您访问不能用点运算符 (.) 访问的属性名。 用法 myXML[expression] 操作数 myXML:* — 一个 XML 或 XMLList 对象。 expression:* — 计算结果为 XML 标签名称或属性名称的表达式。 示例 下例说明如何使用 [ 和 ] 运算符来访问 而不能用点运算符访问的 XML 属性: var myXML:XML = 44; trace(myXML["foo-bar"]); ActionScript 语法参考手册 48 , comma 运算符 计算 expression1,然后计算 expression2,依此类推。此运算符主要与 for 循环语句一起使用,并且通常与括 号 () 运算符一起使用。 用法 (expression1, expression2[, expressionN... ]) 操作数 expression1:* — 要计算的表达式。 expression2:* — 要计算的表达式。 expressionN:* — 要计算的任意数目的其它表达式。 结果 Object — 所计算表达式的值。 示例 使用逗号运算符但不使用括号运算符,来说明逗号运算符的优先级低于赋值运算符 (=) 运算符: var v:Number = 0; v = 4, 5, 6; trace(v); // 4 使用逗号运算符以及括号,并说明逗号运算符返回最后一个表达式的值: var v:Number = 0; v = (4, 5, 6); trace(v); // 6 + concatenation 运算符 连接(合并)字符串。如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来。如 果这两个表达式都是数字,则该运算符充当加法运算符。 用法 expression1 + expression2 操作数 expression1:String — 要连接的字符串。 expression2:String — 要连接的字符串。 结果 String — 连接后的字符串。 示例 下例连接两个字符串。 var lastName:String = "Cola"; var instrument:String = "Drums"; trace(lastName + " plays " + instrument); // Cola plays Drums + concatenation (XMLList) 运算符 将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。只有当这两个操作数都是 XML 或 XMLList 值时, 结果才为 XMLList 对象。 ActionScript 语法参考手册 49 用法 expression1 + expression2 操作数 expression1:* — 一个 XML 或 XMLList 值。 expression2:* — 一个 XML 或 XMLList 值。 结果 XMLList — 连接起来的 XMLList 对象。 示例 下例说明如何使用 XMLList (+)(连接)运算符: var x1:XML = Joe Smith ; var x2:XML = Susan Jones ; var myXMLList:XMLList = x1 + x2; trace(myXMLList.toXMLString()); trace 语句可生成以下输出: Joe Smith Susan Jones += concatenation assignment 运算符 对 expression1 赋予 expression1 / expression2 的值。 用法 expression1 += expression2 操作数 expression1:String — 一个字符串。 expression2:String — 一个字符串。 结果 Number — 连接运算的结果。 示例 下例使用 += 运算符和字符串表达式: var x1:String = "My name is "; x1 += "Gilbert"; ActionScript 语法参考手册 50 trace(x1); // My name is Gilbert += concatenation assignment (XMLList) 运算符 对 XMLList 对象 expression1 赋予 expression1 + expression2 的值。 用法 expression1 += expression2 操作数 expression1:XMLList — 要向其中添加新值的 XMLList 对象。 expression2:* — 一个 XML 或 XMLList 值。 示例 下例说明如何使用 XMLList 连接赋值运算符 (+=): var x1:XML = Athens; var x2:XML = Paris; myXMLList = x1 + x2; var x3:XML = Springfield; myXMLList += x3; trace(myXMLList.toXMLString()); trace 语句可生成以下输出: Athens Paris Springfield ?: conditional 运算符 计算 expression1,如果 expression1 的值为 true,则结果为 expression2 的值;否则,结果为 expression3 的 值。 用法 expression1 ? expression2 : expression3 操作数 expression1:Boolean — 计算结果为布尔值的表达式;通常为像 x < 5 这样的比较表达式。 expression2:* — 任何类型的值。 expression3:* — 任何类型的值。 结果 * — expression2 或 expression3 的值。 示例 下面的语句将变量 x 的值赋予变量 z,因为第一个表达式的计算结果是 true: var x:Number = 5; var y:Number = 10; var z = (x < 6) ? x: y; trace(z); // returns 5 -- decrement 运算符 操作数减去 1。该操作数可以是变量、数组中的元素或对象的属性。此运算符的预先递减格式 (--expression) 从 ActionScript 语法参考手册 51 expression 中减去 1,然后返回结果。此运算符的滞后递减格式 (expression--) 从 expression 中减去 1,然后返 回 expression 的初始值(即减去 1 之前的值)。 用法 --expressionexpression-- 操作数 expression:Number — 一个数字或计算结果为数字的变量。 结果 Number — 被递减的值的结果。 示例 此运算符的预先递减格式将 x 递减为 2 (x - 1 = 2),并将结果作为 y 返回: var x:Number = 3; var y:Number = --x; // y is equal to 2 delete 运算符 破坏由 reference 指定的对象属性;如果在运算完成后该属性不存在,则结果为 true;否则,结果为 false。如 果对不存在的属性或类中未定义的动态属性调用 delete 运算符,则该运算符返回 true。 用法 删除引用 注意:尽管不能删除对象,但是可以通过删除对某个对象的所有引用来使该对象符合垃圾回收条件。对某个对象 最常见的引用就是指向该对象的变量。可以通过将该变量设置为 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 delete (XML) 运算符 在与 XMLList 操作数一起使用时,delete 运算符的结果总是为 true,因为 XMLList 操作数总是引用有效(尽 管有可能为空)的 XMLList 对象。 ActionScript 语法参考手册 52 用法 删除引用 删除由 reference 指定的 XML 元素或属性。 操作数 reference:XMLList — 用来指定要删除的 XML 元素或属性的 XMLList 对象。 结果 Boolean — 如果删除成功,则值为 true;如果删除失败,则值为 false。 示例 删除某个元素的所有内容(包括属性和子元素),而不删除该元素本身: var xml:XML = hamburger fries chocolate shake ; delete xml.item[1].*; delete xml.item[1].@*; trace(xml); 此示例的输出如下所示: hamburger chocolate shake .. descendant accessor 运算符 定位到 XML 或 XMLList 对象的后代元素,或(结合使用 @ 运算符)查找匹配的后代属性。匹配元素或属性不 必是 XML 或 XMLList 对象的子级,它们可以位于树中的更低位置(例如,孙级)。结果是 XMLList 对象,因为有 多个子元素或子属性可以匹配。 用法 myXML..childElement1..@attributeName 操作数 myXML:Object — XML 或 XMLList 对象。 childElement1_or_attributeName — XML 属性的名称或某个特性的名称。 示例 下例说明如何使用后代存取器运算符 (..) 返回 XML 对象的后代元素以及元素的属性: var myXML:XML = Billy Einstein Sally ActionScript 语法参考手册 53 Shostakovich trace(myXML..firstName); // Billy // Sally 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 赋予 expression1 / expression2 的值。 用法 expression1 /= expression2 操作数 expression1:Number — 一个数字或计算结果为数字的变量。 expression2:Number — 一个数字或计算结果为数字的变量。 结果 Number — 一个数字。 示例 下面的代码说明如何将除法赋值运算符 (/=) 与变量和数字结合使用: var a:Number = 10; var b:Number = 2; a /= b; trace(a); // 5 . dot 运算符 访问类变量和方法,获取并设置对象属性并分隔导入的包或类。 用法 object.property_or_method ActionScript 语法参考手册 54 操作数 object:Object — 类的实例。此对象可以是任何内置 ActionScript 类的实例或者您所定义类的实例。此操作数总 是在点 (.) 运算符的左侧。 property_or_method:* — 与对象相关联的属性或方法的名称。内置类的所有有效方法和属性都会在该类的方法和 属性摘要表中列出。此操作数总是在点 (.) 运算符的右侧。 结果 * — 在点右侧命名的变量、方法或属性。 示例 创建一个通用对象并使用点运算符来添加新属性。 var obj:Object = new Object(); obj.propertyA = "hello"; trace(obj.propertyA); // hello . dot (XML) 运算符 定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。返回 的对象是 XMLList,因为有多个子元素或子属性可以匹配。若要返回名称与 ActionScript 保留字相匹配的元素,请使 用 XML.elements() 方法或 XML.descendants() 方法,而不要使用 XML 点 (.) 运算符. 用法 myXML.childElement myXML.@attributeName 操作数 myXML:Object — XML 或 XMLList 对象。 childElement:* — XML 属性的名称。 attributeName:* — 属性的名称。 结果 XMLList — 指定的 XMLList。 示例 下例说明如何使用点 (.) 运算符来返回 XML 对象的子元素以及元素的属性: var myXML:XML = Billy Einstein ; trace(myXML.firstName); // Billy trace(myXML.@id); // 42 == equality 运算符 测试两个表达式是否相等。如果表达式相等,则结果为 true。 用法 expression1 == expression2 操作数 expression1:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。 expression2:Object — 一个数字、字符串、布尔值、变量、对象、数组或函数。 ActionScript 语法参考手册 55 结果 Boolean — 如果这两个表达式相等,则值为 true,否则为 false。 示例 下例将等于运算符 (==) 与 if 语句结合使用: var a:String = "David" var b:String = "David"; if (a == b) { trace("David is David"); } > greater than 运算符 比较两个表达式,并确定 expression1 是否大于 expression2;如果是,则结果为 true。如果 expression1 小 于等于 expression2,则此运算符返回 false。 用法 expression1 > expression2 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 大于 expression2,则值为 true,否则为 false。 示例 下例说明按字母顺序对字符串进行比较,大写字符排在小写字母的前面: var a:String = "first"; var b:String = "First"; trace(a > b); // true >= greater than or equal to 运算符 比较两个表达式,并确定 expression1 是大于等于 expression2 (true),还是 expression1 小于 expression2 (false)。 用法 expression1 >= expression2 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 大于等于 expression2,则值为 true,否则为 false。 示例 大于等于运算符 (>=) 用于确定当前小时是否大于等于 12: if (new Date().getHours() >= 12) { trace("good afternoon"); } else { trace("good morning"); ActionScript 语法参考手册 56 } in 运算符 计算属性是否为特定对象的一部分。若要使用 in 运算符,请将属性名指定为第一个操作数,并将对象指定为第二 个操作数。如果指定的对象包含这样的属性,则结果为 true,否则结果为 false。 用法 expression1 in expression2 示例 下例使用 in 运算符来说明 PI 是 Math 对象的属性,而 myProperty 却不是。 trace("PI" in Math); // true trace("myProperty" in Math); // false ++ increment 运算符 将表达式加 1。该表达式可以是变量、数组中的元素或对象的属性。运算符的预先递增格式 (++expression) 将 expression 加 1,然后返回结果。此运算符的滞后递增格式 (expression++) 将 1 与 expression 相加,然后返回 expression 的初始值(即相加之前的值)。 用法 ++expression expression++ 操作数 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 != inequality 运算符 测试结果与等于运算符 (==) 正好相反。如果 expression1 等于 expression2,则结果为 false。与等于运算符 (==) 一样,相等的定义取决于所比较的数据类型。 用法 expression1 != expression2 操作数 expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 结果 Boolean — 如果表达式不相等,则值为 true,否则为 false。 ActionScript 语法参考手册 57 示例 下例说明不等于运算符 (!=) 的结果: trace(5 != 8); // true trace(5 != 5); // 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 运算符 计算表达式的原型链是否包括 function 的原型对象。之所以包括 instanceof 运算符,是为了与 ECMAScript 3.0 版保持向后兼容,它对于选择用带构造函数的基于原型的继承来代替类继承的高级程序员可能非常有用。 用法 expression instanceof function 注意: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 运算符 计算对象是否与特定数据类型、类或接口兼容。使用 is 运算符(而非 instanceof 运算符)进行类型比较。还可 以使用 is 运算符来检查对象是否实现某个接口。 ActionScript 语法参考手册 58 用法 expression1 is expression2 结果 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;如果是,则结果为 true。如果 expression1 大 于等于 expression2,则结果为 false。如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字 母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。 用法 expression1 < expression2 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 小于 expression2,则值为 true,否则为 false。 示例 下例说明为数值和字符串比较返回的 true 和 false: 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;如果是,则结果为 true。如果 expression1 大于 expression2,则结果为 false。如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母 都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。 用法 expression1 <= expression2 ActionScript 语法参考手册 59 操作数 expression1:Object — 一个字符串、整数或浮点数。 expression2:Object — 一个字符串、整数或浮点数。 结果 Boolean — 如果 expression1 小于等于 expression2,则值为 true,否则为 false。 示例 下例说明为数值和字符串比较返回的 true 和 false: 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 为 false 或可以转换为 false,则返回该表达式;否则,返回 expression2。可以转换为 false 的值的示例有 0、NaN、null 和 undefined。如果将函数调用用作 expression2,那么,当 expression1 的计算结果 为 false 时,将不调用该函数。 用法 expression1 && expression2 操作数 expression1:* — 任何类型的值或表达式。 expression2:* — 任何类型的表达式的值。 结果 * — 如果这两个操作数的类型均为 Boolean,则结果为布尔值。否则,结果为任一表达式的值。 示例 使用逻辑 AND 运算符 (&&) 执行一个测试,确定游戏者是否已经赢得游戏。在游戏过程中,当游戏者赢得一轮 或者得到计分点时,就会更新变量 turns 和 score。在 3 轮之内游戏者的得分达到或超过 75 时,脚本就会输出“You ActionScript 语法参考手册 60 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 是具有绝对的或经过转换的值 true 的变量,则 !expression 的 值为 false。如果表达式 x && y 的计算结果为 false,则表达式 !(x && y) 的计算结果为 true。 用法 !expression 操作数 expression:Boolean — 计算结果为布尔值的表达式或变量。 结果 Boolean — 逻辑运算的布尔结果。 示例 变量 happy 设置为 false。if 条件计算 !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 为 true 或可以转换为 true,则返回该表达式;否则,返回 expression2。如果将函数调用用 作 expression2,那么,当 expression1 的计算结果为 true 时,将不调用该函数。 用法 expression1 || expression2 操作数 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 测试通过”消息。 ActionScript 语法参考手册 61 % modulo 运算符 计算 expression1 除以 expression2 的余数。如果有任一操作数不是数字值,则模运算符 (%) 会尝试将它转换 为数字。模运算结果的符号与被除数(第一个数字)的符号相匹配。例如,-4 % 3 和 -4 % -3 的计算结果都为 -1。 用法 expression1 % expression2 操作数 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 赋予 expression1 / expression2 的值。 用法 expression1 %= expression2 操作数 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 — 一个数字或计算结果为数字的表达式。 ActionScript 语法参考手册 62 结果 Number — 一个整数或浮点数。 示例 下面的语句将整数 2 与 3 相乘,结果为整数 6: trace(2*3); // 6 *= multiplication assignment 运算符 对 expression1 赋予 expression1 * expression2 的值。 用法 expression1 *= expression2 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 Number — expression1 * expression2 的值。如果表达式不能转换为数值,则返回 NaN(非数字)。 示例 下面的示例将值 50 赋予变量 a: var a:Number = 5; var b:Number = 10; trace(a *= b); // 50 :: name qualifier 运算符 标识属性、方法或 XML 属性或特性的命名空间。 用法 namespace::propertynamespace::method()namespace::xmlObject.propertynamespace::xmlObject.@attribute 操作数 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"; } ActionScript 语法参考手册 63 } new 运算符 对类实例进行实例化。new 运算符可以与类型为 Class 的变量一起用来创建类的实例。new 运算符通常与 class 对象一起用来创建类的实例。例如,语句 new Sprite() 创建 Sprite 类的实例。 new 运算符还可用来将类与嵌入的资源(这是编译为 SWF 文件的外部对象,如图像、声音或字体)。每个嵌入 资源都由一个唯一的嵌入资源类表示。若要访问嵌入资源,必须使用 new 运算符来实例化与其关联的类。因此,可 以调用嵌入资源类的相应方法和属性来处理嵌入资源。 用法 new constructor(parameters) 操作数 constructor:* — 一个类、函数或变量,可用来保存类型为 Class 的值。 parameters:* — 一个或多个用逗号分隔的参数。 示例 创建 Book 类,然后使用 new 运算符来创建对象 book1 和 book2。 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] {} object initializer 运算符 创建一个新对象,并用指定的 name 和 value 属性对初始化该对象。使用此运算符的效果与使用 new Object 语 法并用赋值运算符填充属性对的效果相同。新建对象的原型通常命名为 Object 对象。 用法 object = {name1 : value1, name2 : value2,... nameN : valueN} 操作数 object:Object — 要创建的对象。 name1,2,...N:Object — 属性名。 value1,2,...N:Object — 每个 name 属性的对应值。 结果 Object — 一个 Object 对象。 示例 下面代码的第一行用对象初始值设定项 ({}) 运算符创建一个空对象;第二行用构造函数创建一个新对象。 var object:Object = {}; var object:Object = new Object(); ActionScript 语法参考手册 64 () parentheses 运算符 对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括 号前面的函数。 用法 (expression1[, expression2])(expression1, expression2)function(parameter1,..., parameterN) 操作数 expression1:Object — 一个表达式,可以包括数字、字符串、变量或文本。 expression2:Object — 一个表达式,可以包括数字、字符串、变量或文本。 function:Function — 要对括号中的内容执行的函数。 parameter1...parameterN:Object — 一系列参数,在将结果作为参数传递给括号外的函数之前执行这些参数。 示例 如何使用括号来控制表达式的执行顺序: trace((2 + 3) * (4 + 5)); // 45 trace(2 + (3 * (4 + 5))); // 29 trace(2 + (3 * 4) + 5); // 19 trace(2 + (3 * 4) + 5); // 19 ( ) parentheses (XML) 运算符 计算 ECMAScript for XML (E4X) XML 构造中的表达式。例如,myXML.(lastName == "Smith") 标识名为 lastName 且值为 "Smith" 的 XML 元素。结果为 XMLList 对象。 用法 myXML.(expression) 操作数 myXML:* — 一个 XML 或 XMLList 对象。 expression:* — 用来定义匹配元素的表达式。 结果 XMLList — 由括号指定的 XMLList。 示例 下例说明如何使用括号来标识元素和属性: var myXML:XML = Joe Smith Susan Jones Anne Smith ActionScript 语法参考手册 65 ; trace(myXML.employee.(lastName == "Smith").@id.toXMLString()); // 42 // 44 trace(myXML.employee.(Number(@id) > 42).@id.toXMLString()); // 43 // 44 / RegExp delimiter 运算符 如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (RegExp),而不是一个变量、字符 串或其它 ActionScript 元素。但是,请注意,两个连续的正斜杠字符 (//) 表示注释开始。 用法 /pattern/flags 操作数 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 运算符 测试两个表达式是否相等,但不执行自动数据转换。如果两个表达式(包括它们的数据类型)相等,则结果为 true。 用法 expression1 === expression2 全等运算符 (===) 与等于运算符 (==) 在以下三个方面相同: 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两 个单独的数组即使具有相同数量的元素,也永远不会被视为相等。 全等运算符 (===) 与等于运算符 (==) 仅在以下两个方面不同: 全等运算符仅针对数字类型(Number、int 和 uint)执行自动数据转换,而等于运算符 () 针对所有的原始数据 类型执行自动数据转换。 在对 null 和 undefined 进行比较时,全等运算符返回 false。 在对两个包含相同值的原始对象进行比较时,在 ActionScript 3.0 中将生成 true,但在早期版本中将生成 false。 操作数 expression1:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 expression2:Object — 数字、字符串、布尔值、变量、对象、数组或函数。 ActionScript 语法参考手册 66 结果 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 !== strict inequality 运算符 测试结果与全等运算符 (===) 正好相反。除了仅转换 int 和 uint 数据类型外,不全等运算符执行的运算与不等 于运算符相同。如果 expression1 等于 expression2,并且它们的数据类型相等,则结果为 false。 用法 expression1 !== expression2 不全等运算符 (!==) 与不等于运算符 (!=) 在以下三个方面相同: 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两 个单独的数组即使具有相同数量的元素,也永远不会被视为相等。 不全等运算符与不等于运算符 (!=) 仅在以下两个方面不同: 不全等运算符 (!==) 仅针对数字类型(Number、int 和 uint)执行自动数据转换,而不等于运算符 (!=) 针对所 有的原始数据类型执行自动数据转换。 在对 null 和 undefined 进行比较时,不全等运算符 (!==) 返回 true。 操作数 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 ActionScript 语法参考手册 67 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 运算符 如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其它 ActionScript 元素。 用法 "text" 操作数 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 用法 1:用于执行求反时,该运算符将数值表达式的符号反转。 用法 2:用于减法时,该运算符对两个数值表达式执行算术减法运算,从 expression1 中减去 expression2。两 个表达式都为整数时,差为整数。其中任何一个或两个表达式为浮点数时,差为浮点数。 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 Number — 一个整数或浮点数。 示例 用法 1:下面的语句将表达式 2 + 3 的符号反转: trace(-(2 + 3)); // -5 用法 2:下面的语句从整数 5 中减去整数 2: trace(5 - 2); // 3 结果为一个整数 3。 -= subtraction assignment 运算符 对 expression1 赋予 expression1 / expression2 的值。 ActionScript 语法参考手册 68 用法 expression1 -= expression2 操作数 expression1:Number — 一个数字或计算结果为数字的表达式。 expression2:Number — 一个数字或计算结果为数字的表达式。 结果 Number — 算术运算的结果。 示例 使用减法赋值运算符 (-=) 从 5 中减去 10,然后将结果赋予变量 x: var x:Number = 5; var y:Number = 10; x -= y; trace(x); // -5 : type 运算符 用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。在变量声明或赋值中使用时,此 运算符指定变量的类型;在函数声明或定义中使用时,此运算符指定函数的返回类型;在函数定义中与函数参数一起 使用时,此运算符指定该参数预期的变量类型。 用法 [modifiers] var variableName:typefunction functionName():type { ...}function functionName(parameter1:type, ..., parameterN:type) [:type]{ ... } 操作数 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 运算符 计算 expression 并返回一个指定表达式的数据类型的字符串。结果限制在六个可能的字符串值:boolean、 ActionScript 语法参考手册 69 function、number、object、string 和 xml。如果向用户定义的类应用此运算符,则结果为字符串 object。之所以包 括 typeof 运算符是为了向后兼容。使用 is 运算符可以检查类型是否兼容。 用法 typeof expression 操作数 expression:Object — 一个要计算的对象。 结果 String — 类型为 expression 的字符串表示形式。下表说明对各个类型的表达式使用 typeof 运算符的结果。 表达式类型 结果 Array object Boolean boolean Function function int 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 void 运算符 计算表达式,然后放弃其值,返回 undefined。void 运算符通常用在一些比较中,这些比较使用 == 运算符来测 试未定义的值。 用法 void expression 操作数 expression:Object — 要计算的表达式。 结果 * — 值 undefined。 < > XML literal tag delimiter 运算符 用法 myXML = <{tagName} {attributeName} = {attributeValue}>{content} 在 XML 文本中定义 XML 标签。使用正斜杠 / 可以定义结束标签。 操作数 myXML:* — 一个 XML 或 XMLList 对象。 tagName:* — 计算结果为 XML 标签名称的表达式。 ActionScript 语法参考手册 70 attributeName:* — 计算结果为 XML 属性名称的表达式。 attributeValue:* — 计算结果为 XML 属性值的表达式。 content:* — 计算结果为 XML 标签内容的表达式。 示例 如何使用 < 和 > 运算符来定义 XML 文本: var x:XML = cola; 二、语法 ... (rest) parameter 定义关键字 用法 function functionName(parameter0, parameter1, ...rest){ // 语句 } 指定函数将接受任意多个以逗号分隔的参数。参数列表成为了在整个函数体中可用的数组。在参数声明中,数组 的名称在 ... 字符后指定。参数可以拥有保留字以外的任意名称。 如果与其它参数共同使用,则 ...(其余的)参数声明必须是最后指定的参数。只有传递给函数的参数数目超过其 它参数的数目时,才会填充 ...(其余的)参数数组。 逗号分隔参数列表中的每一个参数都将放置在该数组的一个元素中。如果您传递了 Array 类的实例,则整个数组 会放置到 ...(其余的)参数数组的单个元素中。 使用此参数会使 arguments 对象不可用。尽管 ...(其余的)参数提供了与 arguments 数组和 arguments.length 属性相同的功能,但是未提供与由 arguments.callee 提供的功能类似的功能。使用 ...(其余的)参数之前,请确保 不需要使用 arguments.callee。 参数 rest:* — 标识符表示传递至函数的参数数组的名称。不需要将参数命名为 rest;它可以具有不同于关键字的任意 名称。可以将 ...(rest) 参数的数据类型指定为 Array,但是这样可能会产生混淆,因为该参数可接受逗号分隔值列表, 该列表与 Array 类的实例不同。 示例 在两个不同函数中使用...(其余的)参数。第一个函数 traceParams 只对 rest 数组中每一个参数调用 trace() 函 数。第二个函数 average() 调用参数列表并返回平均值。第二个函数还使用了该参数的其它名称 args。 package { import flash.display.MovieClip; public class RestParamExample extends MovieClip { public function RestParamExample() { traceParams(100, 130, "two"); // Output: 100,130,two trace(average(4, 7, 13)); // Output: 8 } } } function traceParams(... rest) { trace(rest); } function average(... args) : Number{ ActionScript 语法参考手册 71 var sum:Number = 0; for (var i:uint = 0; i < args.length; i++) { sum += args[i]; } return (sum / args.length); } AS3 命名空间 定义核心 ActionScript 类的方法和属性,将其作为固定属性而非原型属性。将。ー-as3。ア编译器选项设置为 true (它是 Flex Builder 2 中的默认设置)时,将自动为所有核心类打开 AS3 命名空间。这意味着核心类的单个实例将使 用固定的属性和方法,而不是使用同一属性和方法附加到此类的原型对象上的版本。使用固定属性通常可以提供更好 的性能,但将无法向后兼容 ECMAScript 第 3 版语言规范 (ECMA-262)。 break 语句 用法 break [label] 出现在循环(for、for..in、for each..in、do..while 或 while)内,或出现在与 switch 语句中的特定情况相关联 的语句块内。当在循环中使用时,break 语句指示 Flash 跳过循环体的其余部分,停止循环动作,并执行循环语句后 面的语句。在 switch 中使用 break 语句时,该语句将指示 Flash 跳过此 case 块中的其余语句,并跳到包含它的 switch 语句后面的第一个语句。 在嵌套循环中,break 语句只跳过当前循环的其余部分,而不是中断整个系列的嵌套循环。若要中断整个系列的 嵌套循环,请使用 label 或 try..catch..finally。 break 语句可以具有可选标签,该标签必须与外部标记语句相匹配。使用与外部语句的标签不匹配的标签是一种 语法错误。可以使用标记的 break 语句中断多层嵌套循环语句、switch 语句,或 block 语句。有关示例,请参见 label 语句条目。 参数 label:* — 与语句关联的标签名称。 示例 使用 break 以退出一个循环(如果没有该语句,该循环为无限循环): var i:int = 0; var i:int; while (true) { trace(i); if (i >= 10) { break; //设置跳出语句 } i++; } /* output: 0 1 2 3 4 5 6 ActionScript 语法参考手册 72 7 8 9 10*/ case 语句 用法 case jumpTarget: statements 语言版本 : ActionScript 3.0 Player 版本 : Flash Player 9 定义 switch 语句的跳转目标。如果 jumpTarget 参数等于使用全等运算符 (===) 的 switch 语句的 expression 参数,则 Flash Player 将执行 statements 参数中的语句,直到遇到一个 break 语句或直到 switch 语句结束。 如果在 switch 语句外部使用 case 语句,会产生错误,而且脚本不能编译。 注意:始终用 break 语句结束 statements 参数。如果省略 statements 参数中的 break 语句,它将继续执行下一 个 case 语句,而不是退出 switch 语句。 参数 jumpTarget:* — 任何表达式。 statements:* — 如果 jumpTarget 和 switch 语句中的条件表达式匹配,则执行语句。 示例 定义了 switch 语句 thisMonth 的跳转目标。如果 thisMonth 等于 case 语句中的表达式,则执行该语句。 var thisMonth:int = new Date().getMonth(); switch (thisMonth) { case 0 : trace("January"); break; case 1 : trace("February"); break; case 5 : case 6 : case 7 : trace("Some summer month"); break; case 8 : trace("September"); break; default : trace("some other month"); } class 定义关键字 用法 [dynamic] [public | internal] [final] class className [ extends superClass ] [ implements interfaceName[, ActionScript 语法参考手册 73 interfaceName... ] ] { // 此处是类定义 } 定义一个类,它允许实例化共享您定义的方法和属性的对象。例如,如果您正开发一个发票跟踪系统,则可以创 建一个 Invoice 类,它定义每个发票应具有的所有方法和属性。然后您可以使用 new Invoice() 命令来创建 Invoice 对 象。 每个 ActionScript 源文件只能包含一个对其它源文件或脚本可见的类。外部可见的类可以是公共类或内部类,必 须在包语句内定义。如果在同一个文件中包括其它类,则该类必须放在包语句之外、文件结尾处。 外部可见的类的名称必须与包含该类的 ActionScript 源文件的名称匹配。源文件名称必须是类的名称加上文件扩 展名 .as。例如,如果您将一个类命名为 Student,则定义该类的文件必须被命名为 Student.as。 您不能嵌套类定义;即,不能在一个类定义内定义其它类。 可以定义构造函数方法,每次创建该类的新实例时执行该方法。该构造函数方法的名称必须与类的名称匹配。如 果未定义构造函数方法,则为您创建一个默认的构造函数。 若要指示对象可在运行时添加和访问动态属性,请在 class 语句前面放置 dynamic 关键字。若要声明一个类实 现一个接口,请使用 implements 关键字。若要创建一个类的子类,请使用 extends 关键字。(某一类只能扩展一个 类,但可以实现多个接口。)您可以在一个语句中使用 implements 和 extends。 implements 和 extends 关键字的典型用法: class C implements Interface_i, Interface_j // OK class C extends Class_d implements Interface_i, Interface_j // OK class C extends Class_d, Class_e // not OK 参数 className:Class — 类的完全限定名称。 示例 创建一个名为 Plant 的类。Plant 构造函数采用两个参数。 // Filename Plant.as package { public class Plant { // Define property names and types private var _leafType:String; private var _bloomSeason:String; // Following line is constructor // because it has the same name as the class public function Plant(param_leafType:String, param_bloomSeason:String) { // Assign passed values to properties when new Plant object is created _leafType = param_leafType; _bloomSeason = param_bloomSeason; } // Create methods to return property values, because best practice // recommends against directly referencing a property of a class public function get leafType():String { return _leafType; } public function get bloomSeason():String { return _bloomSeason; } } }在脚本中,使用 new 运算符来创建一个 Plant 对象。 ActionScript 语法参考手册 74 var pineTree:Plant = new Plant("Evergreen", "N/A"); // Confirm parameters were passed correctly trace(pineTree.leafType); trace(pineTree.bloomSeason); const 定义关键字 用法 const identifier = value 指定一个常量,它是只能赋值一次的变量。 附加后跟数据类型的 colon (:) 字符可以严格指定常量的类型。 参数 identifier:* — 常量的标识符。 示例 如果尝试多次为一个常量赋值将发生错误。 const MIN_AGE:int = 21; MIN_AGE = 18; // error 如果常量是一个数组,仍然可以调用 Array 类方法,包括 Array.push()。但是无法分配新数组文本。 const product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); product_array.push("Flex"); // array operations are allowed product_array = ["Other"]; // assignment is an error trace(product_array); continue 语句 用法 continue [label] 跳过最内层循环中的所有剩余语句并开始循环的下一次遍历,就像控制正常传递到了循环结尾一样。continue 语 句在循环外不起作用。在嵌套循环中,使用可选的 label 参数以跳过最内层以内的循环。 continue 语句可以具有可选标签,该标签必须与外部标记语句相匹配。使用与外部语句的标签不匹配的标签是一 种语法错误。使用标记的 continue 语句可以跳过多层嵌套循环语句。 示例 在下面的 while 循环中,continue 语句用于遇到 3 的整数倍时跳过循环体的其余部分,并跳转到循环的顶端(在 该处进行条件测试): var i:int = 0; while (i < 10) { if (i % 3 == 0) { i++; continue; } trace(i); i++; } 在 for 循环中,还可以使用 continue 语句以跳过循环体的其余部分。在下例中,如果 i % 3 等于 0,则跳过 trace(i) 语句: for (var i:int = 0; i < 10; i++) { ActionScript 语法参考手册 75 if (i % 3 == 0) { continue; } trace(i); } default 语句 用法 default: statements 定义 switch 语句的默认情况。如果 switch 语句的 expression 参数不等于(使用全等运算符 [===])给定 switch 语句的 case 关键字后的任何 expression 参数,则执行这些语句。 switch 语句不需要 default case 语句。default case 语句也不一定要出现在列表的最后。如果在 switch 语句外 使用 default 语句,将会产生错误,并且脚本不能编译。 参数 statements:* — 任何语句。 示例 如果某天是星期六或星期日,则不调用任何 case 语句,因此将转为执行 default 语句。 var dayOfWeek:int = new Date().getDay(); switch (dayOfWeek) { case 1 : trace("Monday"); break; case 2 : trace("Tuesday"); break; case 3 : trace("Wednesday"); break; case 4 : trace("Thursday"); break; case 5 : trace("Friday"); break; default : trace("Weekend"); } default xml namespace 指令 用法 default xml namespace = ns default xml namespace 指令可将默认的命名空间设置为用于 XML 对象。 如果未设置 default xml namespace,则默认命名空间是未命名的命名空间(当 URI 设置为空字符串时)。default ActionScript 语法参考手册 76 xml namespace 声明的作用域在函数块内,类似于变量的作用域。 示例 default xml namespace 的作用域是函数块: var nsDefault1:Namespace = new Namespace("http://www.example.com/namespaces/"); default xml namespace = nsDefault1; var x1:XML = ; trace("x1 ns: " + x1.namespace()); scopeCheck(); var x2:XML = ; trace("x2 ns: " + x2.namespace()); function scopeCheck(): void { var x3:XML = ; trace("x3 ns: " + x3.namespace()); var nsDefault2:Namespace = new Namespace("http://schemas.xmlsoap.org/soap/envelope/"); default xml namespace = nsDefault2; var x4:XML = ; trace("x4 ns: " + x4.namespace()); } 以下是本示例 trace() 的输出: x1 ns: http://www.example.com/namespaces/ x3 ns: x4 ns: http://schemas.xmlsoap.org/soap/envelope/ x2 ns: http://www.example.com/namespaces/ do..while 语句 用法 do { statement(s) } while (condition) 与 while 循环类似,不同之处是在对条件进行初始计算前执行一次语句。随后,仅当条件计算结果是 true 时执 行语句。 do..while 循环确保循环内的代码至少执行一次。尽管这也可以通过使用 while 循环在 while 循环开始前放置要 执行的语句的副本来实现,但很多程序员认为 do..while 循环更易于阅读。 如果条件计算结果始终为 true,do..while 就会无限循环。如果进入了无限循环,则 Flash Player 会遇到问题, 最终会发出警告信息,或播放器崩溃。如果知道要循环的次数,应该尽可能使用 for 循环。尽管 for 循环易于阅读和 调试,但不是在所有情况下都能代替 do..while 循环。 参数 condition:Boolean — 要计算的条件。只要 condition 参数的计算结果为 true,就会执行 do 代码块内的 statement(s)。 示例 使用 do..while 循环以计算条件是否为 true,并跟踪 myVar,直到 myVar 大于等于 5。myVar 大于等于 5 时, 循环结束。 var myVar:Number = 0; do { trace(myVar); myVar++; } ActionScript 语法参考手册 77 while (myVar < 5); /* output: 0 1 2 3 4 */ dynamic 属性关键字 用法 dynamic class className { // 此处是类定义 } 指定类的实例可具有在运行时添加的动态属性。如果在对类使用 dynamic 特性,可以在运行时向该类的实例添加 属性。将未标记为 dynamic 的类视为密封的,这意味着无法向该类的实例添加属性。 如果类是密封的(非动态),尝试在类实例上获得属性或设置属性将导致错误。创建实例时,如果将编译器设置为 严谨模式并指定数据类型,尝试向密封的对象添加属性将导致编译器错误;否则,将发生运行时错误。 dynamic 属性不是由子类继承。如果扩展了动态类,则只有声明该子类具有 dynamic 属性时,子类才是动态的。 。ー 。ア注意:仅支持在外部脚本文件中使用此关键字,而不支持在用动作面板编写的脚本中使用此关键字。 示例 创建了两个类,一个是命名为 Expando 的动态类,另一个是命名为 Sealed 的密封类,将在随后的示例中使用它 们。 package { dynamic class Expando { } class Sealed { } } 以下代码创建 Expando 类的实例,并说明可以向该实例添加属性。 var myExpando:Expando = new Expando(); myExpando.prop1 = "new"; trace(myExpando.prop1); // output: new 以下代码创建 Sealed 类的实例,并说明尝试添加属性将导致错误。 var mySealed:Sealed = new Sealed(); mySealed.prop1 = "newer"; // error else 语句 用法 if (condition) { // 语句 } else { // 语句 } 指定当 if 语句中的条件返回 false 时运行的语句。如果仅执行一条语句,则无需使用花括号 ({}) 来括起要由 else ActionScript 语法参考手册 78 语句执行的语句。 参数 condition:Boolean — 计算结果为 true 或 false 的表达式。 示例 else 条件用于检查 age_txt 变量是大于还是小于 18: if (age_txt.text>=18) { trace("welcome, user"); } else { trace("sorry, junior"); userObject.minor = true; userObject.accessAllowed = false; } 使用 if 和 else 语句的组合来对 score_txt 和特定的值进行比较: if (score_txt.text>90) { trace("A"); } else if (score_txt.text>75) { trace("B"); } else if (score_txt.text>60) { trace("C"); } else { trace("F"); } extends 定义关键字 用法 class className extends otherClassName {} interface interfaceName extends otherInterfaceName {} 定义一个类以作为其它类的子类。子类继承超类中定义的所有方法、属性、函数等。无法扩展标记为 final 的类。 也可以使用 extends 关键字来扩展接口。扩展另一个接口的接口包含所有原接口的方法声明。 注意:若要使用此关键字,必须在 FLA 。ー 。ア 。ー文件的 发布设置 对话框的 Flash。ア选项卡中指定 ActionScript 2.0 和 Flash Player 6 。ー 。ア或更高版本。仅支持在外部脚本文件中使用此关键字,而不支持在用动作 面 板编写的脚本中使用此关键字。 参数 className:Class — 您所定义的类的名称。 示例 Car 类扩展 Vehicle 类以便继承它的所有方法、属性和函数。如果您的脚本对 Car 对象进行实例化,则来自 Car 类的方法和来自 Vehicle 类的方法都可以使用。 下例显示名为 Vehicle.as 的文件(它定义 Vehicle 类)的内容: package { class Vehicle { var numDoors:Number; ActionScript 语法参考手册 79 var color:String; public function Vehicle(param_numDoors:Number = 2, param_color:String = null) { numDoors = param_numDoors; color = param_color; } public function start():void { trace("[Vehicle] start"); } public function stop():void { trace("[Vehicle] stop"); } public function reverse():void { trace("[Vehicle] reverse"); } } } false 主表达式关键字 用法 假 表示 false 的布尔值。布尔值为 true 或 false;false 与 true 相反。 如果自动设置数据类型时将 false 转换为数字,则它变为 0;如果自动设置数据类型时将 false 转换为字符串, 则它变为 "false"。 注意:字符串 "false" 转换为布尔值 true。 示例 自动设置数据类型如何将 false 转换为数字以及转换为字符串: ar bool1:Boolean = Boolean(false); // converts it to the number 0 trace(1 + bool1); // outputs 1 // converts it to a string trace("String: " + bool1); // outputs String: false final 属性关键字 用法 final function methodName() { // 此处是您的语句 } final class className {} 指定不能覆盖方法或者不能扩展类。尝试覆盖方法或扩展类,并标记为 final 将导致错误。 参数 methodName:Function — 无法覆盖的方法的名称。 className:Class — 无法扩展的类的名称。 ActionScript 语法参考手册 80 for 语句 用法 for ([init]; [condition]; [next]) { // 语句 } 计算一次 init(初始化)表达式,然后开始一个循环序列。循环序列从计算 condition 表达式开始。如果 condition 表达式的计算结果为 true,将执行 statement 并计算 next 表达式。然后循环序列再次从计算 condition 表达式开始。 如果只执行一条语句,则无需使用花括号 ({}) 来括起要由 for 语句执行的语句。 参数 init — 在开始循环序列前要计算的可选表达式,通常为赋值表达式。还允许对此参数使用 var 语句。 condition — 在开始循环序列前要计算的可选表达式,通常为比较表达式。如果表达式的计算结果为 true,则执 行与 for 语句相关联的语句。 next — 循环序列后要计算的可选表达式,通常是递增或递减表达式。 示例 使用 for 在数组中添加元素: var my_array:Array = new Array(); for (var i:Number = 0; i < 10; i++) { my_array[i] = (i + 5) * 10; } trace(my_array); // output: 50,60,70,80,90,100,110,120,130,140 for..in 语句 用法 for (variableIterant:String in object){ // 语句 } 遍历对象的动态属性或数组中的元素,并对每个属性或元素执行 statement。对象属性不按任何特定的顺序保存, 因此属性看似以随机的顺序出现。固定属性,例如在类中定义的变量和方法,不能由 for..in 语句来枚举。若要获得固 定属性列表,请使用 flash.utils 包中的 describeType() 函数。 参数 variableIterant:String — 要作为迭代变量的变量的名称,迭代变量引用对象的每个属性或数组中的每个元素。 示例 使用 for..in 遍历对象的属性: var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; for (var prop in myObject) { trace("myObject."+prop+" = "+myObject[prop]); } /* output: myObject.firstName = Tara myObject.age = 27 myObject.city = San Francisco ActionScript 语法参考手册 81 for each..in 语句 用法 for each (variableIterant in object){ // 语句 } 遍历集合的项目,并对每个项目执行 statement。for each..in 语句作为 E4X 语言扩展的一部分引入,不仅可以 用于 XML 对象,而且可以用于对象和数组。for each..in 语句仅遍历对象的动态属性,而不是固定属性。固定属性是 指定义为类定义的一部分的属性。若要使用具有用户自定义类的实例的 for each..in 语句,则必须声明具有 dynamic 属性的类。 与 for..in 语句不同,for each..in 语句将遍历对象属性的值,而不是属性的名称。 参数 variableIterant:* — 要作为迭代变量的变量的名称引用集合中的项。 object:Object — 要遍历的集合的名称。集合可以是 XML 对象、通用对象或数组。 示例 使用 for each..in 遍历对象的属性具有的值: var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}; for each (var item in myObject) { trace(item); } /* output: Tara 27 San Francisco function 定义关键字 用法 function functionName([parameter0, parameter1,...parameterN]) : returnType{ // 语句 } var functionName:Function = function ([parameter0, parameter1,...parameterN]) : returnType{ // 语句 } 包含为执行特定任务而定义的一组语句。可以在 SWF 文件的一个位置定义函数,然后在该位置调用它或从 SWF 文件的其它脚本中调用 它。定义函数时,还可以为其指定参数。参数是函数要对其进行操作的值的占位符。可以在每 次调用一个函数时传递不同的参数,这样就可将一个函数重复用于不同的情况。 在一个函数的 statement(s) 块中使用 return 语句,以生成函数或返回 一个值。 用法 1:可以使用 function 关键字来定义具有特定函数名称、参数和语句的函数。当脚本调用函数时,就会执行 函数定义中的语句。允许提前引用;在同一脚本中,函数可以先调用后声明。一个函数定义会替换同一函数以前的所 有定义。只要是允许使用语句的地方就可使用此语法。 用法 2:您也可以使用 function 来创建匿名函数并返回对它的引用。此语法用于表达式中,对于在对象中安装方 法尤其有用。 若需要其它功能,可以在函数定义中使用 arguments 对象。通常使用 arguments 对象来创建一个接受可变数量 的参数的函数和递归的匿名函数。 ActionScript 语法参考手册 82 参数 functionName:Function — 新函数的名称。 returnType:* — 返回值的数据类型。 示例 下例定义了函数 sqr,此函数将返回数字的平方值: function sqr(xNum:Number) { return Math.pow(xNum, 2); } var yNum:Number = sqr(3); trace(yNum); // output: 9 如果在同一脚本中定义和使用函数,使用该函数后可出现函数定义: var yNum:Number = sqr(3); trace(yNum); // output: 9 function sqr(xNum:Number) { return Math.pow(xNum, 2); } get 定义关键字 用法 function get property() : returnType{ // 此处是您的语句 } 定义一个 getter,它是一种可像属性一样读取的方法。getter 是一个特殊的函数,它将返回使用 var 或 const 关 键字声明的属性的值。与其它的方法不同,调用 getter 时不使用括号 (()),这样 getter 看起来就像是变量。 通过允许创建私有属性的公共接口,getter 允许您应用信息隐藏规则。信息隐藏的好处是:即使私有属性的基础 实现发生更改,公共接口也会保持不变。 getter 的另一个优点是它们可在子类中覆盖,而使用 var 或 const 声明的属性则不能。 可结合使用 getter 和 setter 创建读写属性。要创建只读属性,请创建一个没有对应 setter 的 getter。要创建 只写属性,请创建一个没有对应 getter 的 setter。 注意:若要使用此关键字,必须在 FLA 。ー 。ア文件的 发布设置 。ー对话框的 Flash。ア选项卡中指定 ActionScript 2.0 和 Flash Player 6 。ー 。ア或更高版本。仅支持在外部脚本文件中使用此关键字,而不支持在用动作 面 板编写的脚本中使用此关键字。 参数 property:* — get 访问的属性的标识符;此值必须与相应 set 命令中使用的值相同。 returnType:* — 返回值的数据类型。 示例 定义 Team 类。Team 类包括用于在该类内检索和设置属性的 getter 和 setter 方法: package { public class Team { var teamName:String; var teamCode:String; var teamPlayers:Array = new Array(); public function Team(param_name:String, param_code:String) { teamName = param_name; teamCode = param_code; } ActionScript 语法参考手册 83 public function get name():String { return teamName; } public function set name(param_name:String):void { teamName = param_name; } } } 在脚本中输入下面的代码: var giants:Team = new Team("San Fran", "SFO"); trace(giants.name); giants.name = "San Francisco"; trace(giants.name); /* output: San Fran San Francisco */ 在跟踪 giants.name 时,使用 getter 方法以返回属性的值。 if 语句 用法 if (condition) { // 语句 } 计算条件以确定下一条要执行的语句。如果条件为 true,则 Flash Player 将运行花括号 ({}) 内条件后面的语句。 如果条件为 false,则 Flash Player 将跳过花括号内的语句,并运行花括号后面的语句。将 if 语句与 else 语句一起 使用,以在脚本中创建分支逻辑。 如果仅执行一条语句,则无需使用花括号 ({}) 来括起要由 if 语句执行的语句。 参数 condition:Boolean — 计算结果为 true 或 false 的表达式。 implements 定义关键字 用法 myClass implements interface01 [, interface02 , ...] 指定一个类可实现一个或多个接口。当类实现一个接口时,此类必须定义在该接口中声明的所有方法。将所有实 现接口的类的实例视为由接口定义的数据类型的成员。因此,第一个操作数是类实例且第二个操作数是接口时,is 运 算符将返回 true;此外,接口操作将定义来自和施于数据类型的类型强制。 注意:若要使用此关键字,必须在 FLA 。ー 。ア 。ー文件的 发布设置 对话框的 Flash。ア选项卡中指定 ActionScript 2.0 和 Flash Player 6 。ー 。ア或更高版本。仅支持在外部脚本文件中使用此关键字,而不支持在用动作 面 板编写的脚本中使用此关键字。 import 指令 用法 导入 packageName.className 导入 packageName.* 使外部定义的类和包可用于您的代码。例如,如果希望在脚本中使用 flash.display.Sprite 类,则必须导入它。此 ActionScript 语法参考手册 84 要求与 ActionScript 的先前版本不同,在这些版本中 import 指令是可选的。 使用 import 指令后,可以使用完整的类名称,此名称包含包名称,或只是类的名称。 参数 packageName:* — 在单独类文件中定义的包的名称。 className:Class — 在单独类文件中定义的类的名称。 include 指令 用法 include "[path]filename.as" 包括指定文件的内容,就像该文件中的命令是调用脚本的一部分一样。include 指令在编译时调用。因此,如果对 包含的文件进行了任何更改,则必须保存该文件,并重新编译使用它的任何 SWF 文件。 interface 定义关键字 用法 interface InterfaceName [extends InterfaceName ] {} 定义接口。接口是定义一个方法组的数据类型,其中的方法必须由实现接口的任何类定义。 接口与类相似,但也有以下重要差异: 接口仅包含方法的声明,而不包含其实现。也就是说,实现接口的每个类必须为该接口中声明的每个方法提供实 现。 接口方法定义无法具有任何属性,例如 public 或 private,但是在实现接口的类的定义中,实现的方法必须标记 为 public。 多个接口可以通过 extends 语句由接口继承,或通过 implements 语句由类继承。 与 ActionScript 2.0 不同,ActionScript 3.0 允许在接口定义中使用 getter 和 setter 方法。 注意:若要使用此关键字,必须在 FLA 。ー 。ア 。ー文件的 发布设置 对话框的 Flash。ア选项卡中指定 ActionScript 2.0 和 Flash Player 6 。ー 。ア或更高版本。仅支持在外部脚本文件中使用此关键字,而不支持在用动作 面 板编写的脚本中使用此关键字。 internal 属性关键字 用法 [internal] var varName [internal] const kName [internal] function functionName() { // 此处是您的语句 } [internal] class className{ // 此处是您的语句 } [internal] namespace nsName 指定类、变量、常量或函数可用于同一包中的任何调用者。默认情况下,类、属性和方法属于 internal 命名空间。 参数 className:Class — 要指定为内部的类的名称。 varName:* — 要指定为内部的变量的名称。无论该变量是否是类的一部分,都可以应用 internal 属性。 ActionScript 语法参考手册 85 kName:* — 要指定为内部的常量的名称。无论该常量是否是类的一部分,都可以应用 internal 属性。 functionName:Function — 要指定为内部的函数或方法的名称。无论该函数是否是类的一部分,都可以应用 internal 属性。 nsName:Namespace — 要指定为内部的命名空间的名称。无论该命名空间是否是类的一部分,都可以应用 internal 属性。 label 语句 用法 label: statement label: { 语句 } 将语句与可由 break 或 continue 引用的标识符相关联。在嵌套循环中,未引用标签的 break 或 continue 语句 仅会跳过下一循环的其余部分,而不是跳过整个系列的循环。但是,如果定义整个系列循环的语句具有相关联的标签, 则 break 或 continue 语句通过引用该标签可以跳过整个系列的循环。 标签还允许您跳出块语句。除非块语句是循环的一部分,否则无法放置未在该块语句内引用标签的 break 语句。 如果块语句有相关联的标签,则可以放置在该块语句内部引用该标签的 break 语句。 参数 label:* — 要与语句相关联的有效标识符。 statements:* — 要与标签相关联的语句。 示例 如何使用嵌套循环的标签来跳出整个系列的循环。代码使用嵌套循环以生成从 0 到 99 的数字列表。在数字即将 达到 80 前产生 break 语句。如果 break 语句未使用 outerLoop 标签,则代码将仅跳过下一循环的其余部分并,且 代码将继续输出从 90 到 99 的数字。然而,因为使用了 outerLoop 标签,break 语句将跳过整个系列循环的其余部 分,最后输出的数字是 79。 outerLoop: for (var i:int = 0; i < 10; i++) { for (var j:int = 0; j < 10; j++) { if ( (i == 8) && (j == 0)) { break outerLoop; } trace(10 * i + j); } } /* output: 1 2 ... 79 */ namespace 定义关键字 用法 namespace name [= uri] ActionScript 语法参考手册 86 允许您控制定义的可见性。预定义的命名空间包括 public、private、protected 和 internal(这些特定命名空间也 称为。ー访问控制说明符。ア,有关。ー类属性 (property) 的属性 (attributes)。ア的文档中讨论了这些命名空间。如果这些预 定义的命名空间无法满足您的要求,您可以定义自定义命名空间。 下列步骤说明如何创建、应用和引用自定义命名空间: 首先,使用 namespace 关键字来定义自定义命名空间。例如,代码 namespace version1 将创建名为 version1 的命名空间。 其次,在属性或方法的声明中使用自定义命名空间将此命名空间应用于属性或方法。例如,代码 version1 myProperty:String 将创建名为 myProperty 的属性,它属于 version1 命名空间 最后,通过使用 use 关键字或使用命名空间作为标识符的前缀来引用该命名空间。例如,代码 use namespace version1; 引用后续代码行的 version1 命名空间,而代码 version1::myProperty 引用 myProperty 属性的 version1 命名空间。 参数 name:Namespace — 命名空间的名称,可以是任意合法的标识符。 uri:String — 命名空间的统一资源标识符 (URI)。这是一个可选参数。 native 属性关键字 用法 native function functionName(); class className{ native function methodName(); } 指定函数或方法由 Flash Player 以本机代码的形式实现。Flash Player 内部使用 native 关键字来声明 ActionScript 应用程序接口 (API) 中的函数和方法。在您自己的代码中无法使用此关键字。  null 主表达式关键字 用法 null 一个可以分配给变量的或由未提供数据的函数返回的特殊值。您可以使用 null 表示缺少的或不具有已定义数据类 型的值。 不要将值 null 与特殊值 undefined 相混淆。使用等于运算符 (==) 对 null 和 undefined 进行比较时,它们的比 较结果为相等。但是,使用全等运算符 (===) 对 null 和 undefined 进行比较时,它们的比较结果为不相等。 示例 检查索引数组的前六个值,如果没有设置值(如果 value == null),则输出一条消息: var testArray:Array = new Array(); testArray[0] = "fee"; testArray[1] = "fi"; testArray[4] = "foo"; for (i = 0; i < 6; i++) { if (testArray[i] == null) { trace("testArray[" + i + "] == null"); } } /* output: ActionScript 语法参考手册 87 testArray[2] == null testArray[3] == null testArray[5] == null */ override 属性关键字 用法 override function name() { // 此处是您的语句 } 指定用一种方法替换继承的方法。若要覆盖继承的方法,则必须使用 override 属性,并确保名称、数字、参数类 型和返回类型完全匹配。在未使用 override 属性的情况下尝试覆盖方法是错误的。同样的,如果方法没有匹配的继承 方法,则使用 override 属性也是错误的。 无法对下列任一项使用 override 属性: 变量 常量 静态方法 未继承的方法 实施接口方法的方法 超类中标记为 final 的继承方法 尽管不能覆盖使用 var 或 const 声明的属性,但是通过使基类属性为 getter-setter,并覆盖使用 get 和 set 定 义的方法,可以实现类似的功能。 参数 name:Function — 要覆盖的方法的名称。 package 定义关键字 用法 package packageName { class someClassName{ } } 允许您将代码组织为可由其它脚本导入的离散组。您必须使用 package 关键字以指示类是包的成员。 参数 packageName:* — 包的名称。 private 属性关键字 用法 class className{ private var varName; private const kName; private function methodName() { // 此处是您的语句 ActionScript 语法参考手册 88 } private namespace nsName; } 指定变量、常量或方法仅可供声明或定义它的类使用。与在 ActionScript 2.0 中的情况不同,在 ActionScript 3.0 中,private 不再提供对子类的访问。此外,private 限制编译时和运行时的访问。默认情况下,变量和函数对同一包 中的任何调用者均可用。使用此关键字可以限制对变量或函数的访问。 您只能在类定义中使用此关键字,不能在接口定义中使用。无法将 private 应用于类或任何其它包级定义。 参数 varName:* — 要指定为私有的变量的名称。仅当该变量位于类内部时,才可以应用 private 属性。 kName:* — 要指定为私有的常量的名称。仅当该常量位于类内部时,才可以应用 private 属性。 methodName:Function — 要指定为私有的方法的名称。仅当该方法位于类内部时,才可以应用 private 属性。 nsName:Namespace — 要指定为私有的命名空间的名称。仅当该命名空间位于类内部时,才可以应用 private 属 性。 示例 如何使用 private 关键字来隐藏类中的某些属性。 class A { private var alpha:String = "visible only inside class A"; public var beta:String = "visible everywhere"; } class B extends A { function B() { alpha = "Access attempt from subclass"; // error } } 因为 alpha 是私有变量,从 A 类的外部无法访问它,即使从子类 B 中也无法访问。尝试访问私有变量将生成错 误。 protected 属性关键字 用法 class className{ protected var varName; protected const kName; protected function methodName() { // 此处是您的语句 } protected namespace nsName; } 指定变量、常量、方法或命名空间只可用于定义它的类及该类的任何子类。ActionScript 3.0 中的 protected 的定 义与 ActionScript 2.0 版本的 private 的定义类似,只不过 protected 同时限制了编译时和运行时的访问。默认情况 下,变量或函数可用于同一包中的任何调用者。使用此关键字可以限制对变量或函数的访问。 您只能在类定义中使用此关键字,不能在接口定义中使用。无法将 private 应用于类或任何其它包级定义。 ActionScript 3.0 中的 protected 的定义比 Java 编程语言中的 protected 的定义更具限制性。ActionScript 3.0 中的 protected 严格限制对子类的访问,而 Java 中的 protected 允许对同一包中的任何类进行访问。例如,如果名 为 Base 的类包含标记为 protected 的属性,则在 ActionScript 3.0 中,只有扩展 Base 的类可以访问受保护的属性。 在 Java 中,Base 所在的同一个包中的所有类都可以访问受保护的属性,即使该类不是 Base 的子类。 ActionScript 语法参考手册 89 参数 varName:* — 要指定为受保护的变量的名称。仅当该变量位于类内部时,才可以应用 protected 属性。 kName:* — 要指定为受保护的常量的名称。仅当该常量位于类内部时,才可以应用 protected 属性。 methodName:Function — 要指定为受保护的方法的名称。仅当该方法位于类内部时,才可以应用 protected 属 性。 nsName:Namespace — 要指定为受保护的命名空间的名称。仅当该命名空间位于类内部时,才可以应用 protected 属性。 示例 类 A 中创建受保护的类变量,并且在类 B 中成功地对该变量进行了访问,这是因为类 B 是类 A 的子类。 class A { private var alpha:String = "visible only inside class A"; protected var beta:String = "visible inside class A and its subclasses"; } class B extends A { public function B() { beta = "Access attempt from subclass succeeded"; trace(beta); // output: Access attempt from subclass succeeded } } public 属性关键字 用法 public var varName public const kName public function functionName() { // 此处是您的语句 } public class className { // 此处是您的语句 } public namespace nsName 指定类、变量、常量或方法可用于任何调用者。默认情况下,类、变量和方法是内部的,这意味着它们仅在当前 包中可见。若要使类、变量或方法对所有调用者可见,则必须使用 public 属性。 参数 className:Class — 要指定为公共的类的名称。 varName:* — 要指定为公共的变量的名称。无论该变量是否是类的一部分,都可以应用 public 属性。 kName:* — 要指定为公共的常量的名称。无论该常量是否是类的一部分,都可以应用 public 属性。 functionName:Function — 要指定为公共的函数的名称。无论该函数是否是类的一部分,都可以应用 public 属 性。 nsName:Namespace — 要指定为公共的命名空间的名称。无论该命名空间是否是类的一部分,都可以应用 public 属性。 示例 下例说明如何在类文件中使用公共变量: class User { public var age:Number; ActionScript 语法参考手册 90 public var fname:String; } // end of class User definition var jimmy:User = new User(); jimmy.age = 27; jimmy.fname = "jimmy"; trace(jimmy.age, jimmy.fname); // output: 27 jimmy 如果将在 User 类中的一个公共变量更改为私有变量,则对访问 User 类外部变量的任何尝试都将生成编译时错 误。 return 语句 用法 function functionName () { return [expression] } 导致立即返回执行调用函数。如果 return 语句后跟表达式,则计算此表达式并返回结果。 如果函数定义包含返回类型,则 return 语句必须后跟表达式。如果未指定返回类型且单独使用 return 语句,则 返回 undefined。 无法返回多个值。如果尝试返回多个值,则将只返回最后一个值。在下例中,返回 c: 返回 a、b、c;如果需要返回多个值,则应改用数组或对象。 参数 expression:* — 要计算并返回为函数的值的表达式。此参数是可选的。 结果 * — 经过计算的 expression 参数(如果提供了)。 示例 使用 sum() 函数体内的 return 语句,以返回三个参数相加后的值。下一行代码调用 sum() 并将返回值赋予变量 newValue。 function sum(a:Number, b:Number, c:Number):Number { return (a + b + c); } var newValue:Number = sum(4, 32, 78); trace(newValue); // output: 114 set 定义关键字 用法 function set property(newValue:*) : void{ // 此处是您的语句 } 定义一个 setter,它是一种在公共接口中作为属性出现的方法。setter 是一种特殊方法,它设置使用 var 关键字 声明的属性的值。与其它的方法不同,调用 setter 时不使用括号 (()),这样 setter 看起来就像是变量。 通过允许创建私有属性的公共接口,Setter 允许您应用信息隐藏规则。信息隐藏的好处是:即使私有属性的基础 实现发生更改,公共接口也会保持不变。 setter 的另一个优点是它们可在子类中覆盖,而使用 var 声明的属性则不能。 setter 的返回类型必须为 void 或未指定。 可以将 setter 与 getter 相接合来创建读写属性。要创建只读属性,请创建一个没有对应 setter 的 getter。要 ActionScript 语法参考手册 91 创建只写属性,请创建一个没有对应 getter 的 setter。 。ー 。ア注意:仅支持在外部脚本文件中使用此关键字,而不支持在用动作面板编写的脚本中使用此关键字。 参数 property:* — set 修改的属性的标识符;此值必须与相应 get 命令中使用的值相同。 newValue:* — 要分配的新值。 示例 通过定义 getter-setter 创建了名为 age 的读写属性。 package { class User { private var userAge:Number; public function get age():Number { return userAge; } public function set age(x:Number):void { userAge = x; } } } 在脚本中输入下面的代码: var myUser:User = new User(); myUser.age = 25; trace(myUser.age); // output: 25 static 属性关键字 用法 class someClassName{ static var varName; static const kName; static function methodName() { // 此处是您的语句 } } 指定变量、常量或方法属于类,而不属于类的实例。 若要访问静态类成员,请使用类的名称而不是实例的名称。例如,Date 类具有名为 parse() 的静态方法,该方法 仅能使用以下语法调用: Date.parse() 对 Date 类的实例无法调用 parse() 方法。例如,以下代码将生成错误: var myDate:Date = new Date(); myDate.parse("Jan 01 00:00:00 2006"); // error 您只能在类定义中使用 static,而不能在接口定义中使用。 未继承静态类成员。不能像在 Java 或 C++ 中那样,使用子类的名称引用静态类成员。然而,无需使用任何限 定词,就可以在类或子类中引用静态变量或方法。请参见下例。 不能在静态方法内部使用 super 语句或 this 关键字。 。ー 。ア注意:仅支持在外部脚本文件中使用此关键字,而不支持在用动作面板编写的脚本中使用此关键字。 参数 varName:* — 要指定为静态的变量的名称。 ActionScript 语法参考手册 92 kName:* — 要指定为静态的常量的名称。 methodName:Function — 要指定为静态的方法的名称。 示例 如何使用 static 关键字创建一个计数器,该计数器跟踪已创建类的实例的数量。由于 numInstances 变量是静态 的,因此它只对整个类创建一次,而不是对每个单独实例都创建一次。创建名为 Users.as 的新 ActionScript 文件, 并输入以下代码: class Users { private static var numInstances:Number = 0; function Users() { numInstances++; } static function get instances():Number { return numInstances; } } 在脚本中输入下面的代码: trace(Users.instances); var user1:Users = new Users(); trace(Users.instances); var user2:Users = new Users(); trace(Users.instances); 下例扩展了 Users 类,以说明尽管未继承静态变量和方法,但是可以在子类中引用它们。 class PowerUsers extends Users{ function PowerUsers() { instances++; // unqualified reference to static property Users.instances is legal } } trace(PowerUsers.instances); // error, cannot access static property using PowerUsers class super 语句 用法 super([arg1, ..., argN]) super.method([arg1, ..., argN]) 调用方法或构造函数的超类或父版本。在类构造函数体内使用 super() 语句时,该语句将调用构造函数的超类版 本。对超类构造函数的调用必须有正确的参数数目。请注意,不管是否显式调用超类函数,都会调用到超类构造函数。 如果不是显式调用它,则将在子类构造函数体中的第一个语句前自动插入不带参数的调用。这意味着,如果在子类中 定义了构造函数,并且超类构造函数具有一个或多个参数,则必须显式调用具有正确参数数目的超类构造函数,否则 将产生错误。然而,根据 ActionScript 2.0 的要求,对超类构造函数的调用无需是子类构造函数中的第一个语句。 在实例方法体中使用时,super 可以与 dot (.) 运算符共同使用以调用方法的超类版本,并可以选择将参数 (arg1 ... argN) 传递给超类方法。这对于创建某些子类方法很有用,这些子类方法在向超类方法添加附加行为的同时,又调用 这些超类方法执行其原始行为。 在静态方法中不能使用 super 语句。 参数 method:Function — 要在超类中调用的方法。 argN:* — 可选参数,这些参数传递给方法的超类版本,或者传递给超类的构造函数。 ActionScript 语法参考手册 93 switch 语句 用法 switch (expression) { caseClause: [defaultClause:] } 根据表达式的值,使控制转移到多条语句的其中一条。如果没有任何 case 语句与表达式相匹配,则所有 switch 语句应该包含将执行的默认 case。每个 case 语句应该以 break 语句结尾,以避免发生落空错误。当一个 case 落 空时,即使下一个 case 语句可能与测试表达式不匹配,它仍将执行此 case 中的代码。 参数 expression:* — 任何表达式。 示例 定义了落空至默认 case 的 switch 语句: var switchExpression:int = 3; switch (switchExpression) { case 0: trace(0); break; case 1: trace(1); break; case 2: trace(2); break; default: trace("Not 0, 1, or 2"); } // output: Not 0, 1, or 2 this 主表达式关键字 用法 this 对方法的包含对象的引用。执行脚本时,this 关键字引用包含该脚本的对象。在方法体的内部,this 关键字引用 包含调用方法的类实例。 示例 若要调用在动态类中定义的函数,则必须使用 this 调用适当作用域内的函数: // incorrect version of Simple.as /* dynamic class Simple { function callfunc() { func(); } } */ ActionScript 语法参考手册 94 // correct version of Simple.as dynamic class Simple { function callfunc() { this.func(); } } 将下面的代码添加到您的脚本中: var simpleObj:Simple = new Simple(); simpleObj.func = function() { trace("hello there"); } simpleObj.callfunc(); 当您在 callfunc() 方法中使用 this 时,以上代码生效。不过,如果您使用了不正确的 Simple.as 版本,将出现语 法错误(在上例中已注释掉)。 throw 语句 用法 throw expression 生成或引发 一个可由 catch 代码块处理或捕获 的错误。如果 catch 块未捕获异常,则将引发值的字符串表示形 式发送到。ー输出。ア面板。如果 catch 或 finally 块未捕获异常,则将引发值的字符串表示形式发送到日志文件。 通常,引发的错误是 Error 类或其子类的实例(请参见。ー示例。ア部分)。 参数 expression:* — 一个 ActionScript 表达式或对象。 示例 一个名为 checkEmail() 的函数检查传递给它的字符串是否为格式正确的电子邮件地址。如果该字符串不包含 @ 符号,则该函数将引发一个错误。 function checkEmail(email:String) { if (email.indexOf("@") == -1) { throw new Error("Invalid email address"); } } checkEmail("someuser_theirdomain.com");然后下面的代码调用 try 代码块内的同一函数 checkEmail()。如果电 子邮件字符串不包含有效的电子邮件地址,则 trace 语句将输出错误消息。 try { checkEmail("Joe Smith"); } catch (e) { trace(e); } // output: Error: Invalid email address.在下面的示例中,将引发 Error 类的一个子类。对 checkEmail() 函数进行 了修改,使其引发该子类的一个实例。 // Define Error subclass InvalidEmailError class InvalidEmailAddress extends Error { public function InvalidEmailAddress() { message = "Invalid email address."; } } ActionScript 语法参考手册 95 在脚本中输入下面的代码: import InvalidEmailAddress; function checkEmail(email:String) { if (email.indexOf("@") == -1) { throw new InvalidEmailAddress(); } } try { checkEmail("Joe Smith"); } catch (e) { trace(e); } // output: Error: Invalid email address. true 主表达式关键字 用法 真 表示 true 的布尔值。布尔值为 true 或 false;true 与 false 相反。如果自动设置数据类型将 true 转换为数字, 则它变为 1;如果将 true 转换为字符串,则它变为 "true"。 示例 说明 true 在 if 语句中的使用: var shouldExecute:Boolean; // ... // code that sets shouldExecute to either true or false goes here // shouldExecute is set to true for this example: shouldExecute = true; if (shouldExecute == true) { trace("your statements here"); } // true is also implied, so the if statement could also be written: // if (shouldExecute) { // trace("your statements here"); // } 下例说明自动数据类型设置如何将 true 转换为数字 1: var myNum:Number; myNum = 1 + true; trace(myNum); // output: 2 try..catch..finally 语句 用法 try { // try 块 } finally { ActionScript 语法参考手册 96 // finally 块 } try { // try 块 } catch(error[:ErrorType1]) { // catch 块 } [catch(error[:ErrorTypeN]) { // catch 块 }] [finally { // finally 块 }] 包含一个代码块,在其中可能会发生错误,然后对该错误进行响应。异常处理是使用 try..catch..finally 语句实现 的,是 ActionScript 3.0 中处理运行时错误条件的主要机制。产生运行时错误时,Flash Player 将引发异常,这意味着 该 Flash Player 暂停了正常的执行并创建了一个 Error 类型的特殊对象。然后 Flash Player 将错误对象传递或抛给 第一个可用的 catch 块。如果没有可用的 catch 块,会将此异常视为未捕获的异常。未捕获的异常将导致脚本终止。 可以使用 throw 语句以显式引发代码中的异常。可以引发任意值,但是最佳做法是引发一个对象,因为这样比较 灵活,并能与 Flash Player 的行为相匹配。 若要捕获一个异常,无论它是由 Flash Player 还是您自己的代码引发的,都要将可能引发异常的代码放置在 try 块中。如果 try 块中的任何代码引发异常,控制会传递到 catch 块(如果有),然后传递到 finally 块(如果有)。无 论是否引发了异常,始终会执行 finally 块。如果 try 块中的代码未引发异常(即,如果 try 块正常完成),则会忽略 catch 块中的代码,但是仍将执行 finally 块中的代码。即使 try 块使用 return 语句退出,也会执行 finally 块。 try 代码块后面必须跟有 catch 代码块、finally 代码块,或两者都有。单个 try 代码块可以有多个 catch 代码块, 但只能有一个 finally 代码块。您可以根据需要嵌套任意层数的 try 块。 catch 处理函数中指定的 error 参数必须是一个简单的标识符,如 e 或 theException 或 x。还可以为参数指定 类型。当与多个 catch 块一起使用时,如果指定了参数类型,则可以捕获从一个 try 块引发的多种类型的错误。 如果引发的异常是对象,则当引发的对象是指定类型的子类时,类型将匹配。如果引发的错误属于特定类型,将 执行处理相应错误的 catch 代码块。如果引发的异常不属于指定类型,则不执行 catch 块,而自动将该异常从 try 块 引发到与其匹配的 catch 处理函数。 如果在某个函数内引发了错误,而该函数不包含 catch 处理函数,则 Flash Player 将退出该函数以及任何调用函 数,直到找到一个 catch 块。在此过程中,在各层上都会调用 finally 处理函数。 参数 error:* — 从 throw 语句引发的表达式,通常是 Error 类或其子类之一的实例。 示例 一条 try..catch 语句。在 try 块内的代码包含非法操作。sprite 无法将自己添加为子项。因此,Flash Player 将 引发异常,并将类型 ArgumentError 的对象传递到相应的 catch 块。 import flash.display.Sprite; var spr:Sprite = new Sprite(); try { spr.addChild(spr); } catch (e:ArgumentError) { trace(e); // output: ArgumentError: Error #2024: An object may not be added as a child of itself. } 在 下 面 的 示 例 中 , RecordSetException 和 MalformedRecord 对 象 是 Error 类 的 子 类 。 class RecordSetException extends Error { public function RecordSetException () { message = "Record set exception occurred."; ActionScript 语法参考手册 97 } } class MalformedRecord extends Error { public function MalformedRecord { message = "Malformed record exception occurred."; } } 在 RecordSet 类的 sortRows() 方法内,将根据所发生异常的类型引发其中一个以前定义的错误对象。下例说明 此代码的外观: class RecordSet { public function sortRows() { var returnVal:Number = randomNum(); if (returnVal == 1) { throw new RecordSetException(); } else if (returnVal == 2) { throw new MalformedRecord(); } } public function randomNum():Number { return Math.round(Math.random() * 10) % 3; } } 最后,下面的代码调用 RecordSet 类的实例上的 sortRows() 方法。它为 sortRows() 引发的每种类型的错误定 义 catch 块。 import RecordSet; var myRecordSet:RecordSet = new RecordSet(); try { myRecordSet.sortRows(); trace("everything is fine"); } catch (e:RecordSetException) { trace(e.toString()); } catch (e:MalformedRecord) { trace(e.toString()); } use namespace 指令 用法 use namespace ns1[, ns2, ...nsN] 使指定的命名空间添加到打开的命名空间集中。退出当前代码块时,将从打开的命名空间集中删除指定的命名空 间。use namespace 指令可以出现在程序、包定义或类定义的顶层。 参数 nsN:Namespace — 将一个或多个命名空间添加到打开的命名空间集中。 ActionScript 语法参考手册 98 var 定义关键字 用法 var variableName [= value1][...,variableNameN[=valueN]] 指定一个变量。如果变量是在函数内声明的,则这些变量是局部变量。它们是为该函数声明的,在函数调用结束 时到期。 如果在函数外声明变量,该变量在包含该语句的整个时间轴中都可用。 无法将其它对象作用域内的变量声明为局部变量。 my_array.length = 25; // 正确 var my_array.length = 25; // 语法错误 为变量分配数据类型的方法是在变量后加冒号字符,后跟数据类型。 您可以在一条语句中声明多个变量,用逗号分隔各个声明(尽管此语法可能会降低代码的清晰程度): var first:String = "Bart", middle:String = "J.", last:String = "Bartleby"; 参数 variableName:* — 一个标识符。 示例 ActionScript 创建一个新的产品名称数组。Array.push 将一个元素添加到该数组的末尾。 var product_array:Array = new Array("Studio", "Dreamweaver", "Flash", "ColdFusion", "Contribute", "Breeze"); product_array.push("Flex"); trace(product_array); // output: Studio,Dreamweaver,Flash,ColdFusion,Contribute,Breeze,Flex while 语句 用法 while (condition) { // 语句 } 计算一个条件,如果该条件的计算结果为 true,则会执行一条或多条语句,之后循环会返回并再次计算条件。若 该条件的计算结果为 false,则会跳过语句,并结束循环。 while 语句执行下面一系列步骤。每重复一次第 1 步至第 4 步,称作循环的一次遍历。每次遍历开始时都将测 试该条件,具体步骤如下所示: 计算表达式 condition。 如果 condition 的计算结果为 true 或一个转换为布尔值 true 的值(如一个非零数),则转到第 3 步。否则, while 语句结束并继续执行 while 循环后面的下一个语句。 运行语句块 statement(s)。如果遇到 continue 语句,则跳过其余的语句并转到步骤 1。如果遇到 break 语句, 则 while 语句结束并从 while 循环之后的下一语句继续开始执行。 转到步骤 1。 通常当计数器变量小于某指定值时,使用循环执行动作。在每个循环的结尾递增计数器的值,直到达到指定值为 止。此时,condition 不再为 true,循环结束。 如果仅执行一条语句,则无需使用花括号 ({}) 来括起要由 while 语句执行的语句。 参数 condition:Boolean — 计算结果为 true 或 false 的表达式。 示例 while 语句用于测试表达式。在 i 的值小于 20 时,跟踪 i 的值。当条件不再为 true 时,循环将退出。 var i:Number = 0; ActionScript 语法参考手册 99 while (i < 20) { trace(i); i += 3; } /* output: 0 3 6 9 12 15 18 */ with 语句 用法 with (object:Object) { // 语句 } 建立要用于执行一条或多条语句的默认对象,从而潜在地减少需要编写的代码量。 object 参数成为上下文,从中读取 statement(s) 参数的属性、变量和函数。例如,如果 object 为 my_array, 并且指定的两个属性为 length 和 concat,则这些属性将自动读取为 my_array.length 和 my_array.concat。在另一 个示例中,如果 object 为 state.california,则 with 语句内部的任何动作或语句都将从 california 实例内部调用。 若要查找 statement(s) 参数中某个标识符的值,ActionScript 将从 object 指定的范围链的开头处开始,按照特 定的顺序在范围链的每个级别中搜索该标识符。 with 语句使用范围链解析标识符,该范围链从下面列表中的第一项开始,到最后一项结束: 该对象在最内层的 with 语句中的 object 参数中指定。 该对象在最外层的 with 语句中的 object 参数中指定。 Activation 对象(脚本调用函数时自动创建的临时对象,该函数包含函数中调用的局部变量) 该对象包含当前正在执行的脚本 全局对象(如 Math 和 String 等内置对象)。 若要在 with 语句内部设置变量,必须已在 with 语句外部声明了该变量,或必须输入了希望该变量所存在的时间 轴的完整路径。如果在 with 语句中设置了未声明的变量,with 语句将根据范围链查找该值。如果该变量尚不存在, 则将在调用 with 语句的时间轴上设置此新值。 参数 object:Object — ActionScript 对象或影片剪辑的一个实例。 示例 设置 someOther_mc 实例的 _x 和 _y 属性,然后指示 someOther_mc 转到第 3 帧并停止。 with (someOther_mc) { _x = 50; _y = 100; gotoAndStop(3); }下面的代码片断说明如何在不使用 with 语句的情况下编写上述代码。 someOther_mc._x = 50; someOther_mc._y = 100; ActionScript 语法参考手册 100 someOther_mc.gotoAndStop(3);with 语句对于同时访问一个范围链列表中的多个项很有用。下例中,内置的 Math 对象放置在范围链的前部。将 Math 设置为默认对象会将标识符 cos、sin 和 PI 分别解析为 Math.cos、 Math.sin 和 Math.PI。标识符 a、x、y 和 r 不是 Math 对象的方法或属性,但由于它们存在于函数 polar() 的对象 激活作用域内,所以将其解析为相应的局部变量。 function polar(r:Number):void { var a:Number, x:Number, y:Number; with (Math) { a = PI * pow(r, 2); x = r * cos(PI); y = r * sin(PI / 2); } trace("area = " + a); trace("x = " + x); trace("y = " + y); } polar(3); /* output: area = 28.2743338823081 x = -3 y = 3 */ 三、函数 Array () 函数 返回 Array — 长度为 0 或大于 0 的数组。 public function Array(... args):Array 创建一个新数组。 可以是长度为 0 或大于 0 的数组,也可以是由一组指定元素(可能具有不同的数据类型)填 充的数组。所使用参数的数目和数据类型决定了返回数组的内容。 在不使用参数的情况下调用 Array() 会返回空的数组。 使用单个整数参数调用 Array() 可返回具有指定长度的数组,但数组元素具有未定义的值。 使用一组指定值调用 Array() 将返回由包含各个指定值的元素构成的数组。 使用 Array() 函数类似于使用 Array 类构造函数创建数组。 当参数不是原始值时,应使用 as 运算符进行显式类型转换或类型转换。 参数 ... args — 不传递参数可以创建空数组,传递单个整数参数可以创建具有特定长度的数组,传递一系列由逗号分 隔的具有各种类型的值可创建使用这些值填充的数组。 下面的示例演示 Array() 函数在参数不是原始值时的行为。 转换为数组的一种常见用法是转换以数组格式存储值 的 Object 实例。 如果调用 Array() 时使用了 Object 类型或其它任何非原始数据类型的参数,则对对象的引用将存 储在新数组的元素中。 也就是说,如果传递的唯一参数是一个对象,则对该对象的引用将成为新数组的第一个元素。 var obj:Object = [ "a", "b", "c" ]; var newArray:Array = Array( obj ); trace(newArray == obj); // false trace(newArray[0] == obj); // true trace(newArray[0][0]) // a ActionScript 语法参考手册 101 trace(newArray[0][1]) // b trace(newArray[0][2]) // c 若要将 obj 转换为数组,请使用 as 运算符,它将在 obj 为有效数组的情况下返回数组引用,否则返回 null: var obj:Object = [ "a", "b", "c" ]; var newArray:Array = obj as Array; trace(newArray == obj); // true trace(newArray[0]); // a trace(newArray[1]); // b trace(newArray[2]); // c Boolean () 函数 返回 Boolean — 转换为 Boolean 的结果。 public function Boolean(expression:Object):Boolean 将 expression 参数转换为布尔值并返回该值。 返回值取决于参数的数据类型和值,如下表所述: 输入值 示例 返回值 0 Boolean(0) false NaN Boolean(NaN) false 数字(非 0 或 NaN) Boolean(4) true 空字符串 Boolean("") false 非空字符串 Boolean("6") true null Boolean(null) false undefined Boolean(undefined) false Object 类的实例 Boolean(new Object()) true 无参数 Boolean() false 与 ActionScript 的早期版本不同,Boolean() 函数与 Boolean 类构造函数返回相同的结果。 参数 expression:Object — 要转换为 Boolean 的表达式或对象。 Date () 函数 返回 String — 作为 String 数据类型的当前日期。 Date() 的返回值与 Date.toString() 的返回值相同。 public function Date():String 返回当前星期值、日期值、时间和时区的字符串表示形式。 输出的日期格式为: Day Mon Date HH:MM:SS TZD YYYY 例如: Wed Apr 12 15:30:17 GMT-0700 2006 若要将某个值转换为 Date 类型,请使用 x as Date 代替 Date(x)。 decodeURI () 函数 返回 String — 一个字符串,其中以前由 encodeURI 函数转义的所有字符都还原为它们的未转义表示形式。 ActionScript 语法参考手册 102 public function decodeURI(uri:String):String 将已编码的 URI 解码为字符串。 返回一个字符串,其中以前由 encodeURI 函数编码的所有字符都还原为它们 的未编码表示形式。 下表显示不会 由 decodeURI 函数解码为字符的转义序列的集合。 使用 decodeURIComponent() 可解码此表中 的转义序列。 未解码的转义序列 字符等效形式 %23 # %24 $ %26 & %2B + %2C , %2F / %3A : %3B ; %3D = %3F ? %40 @ 参数 uri:String — 一个使用 encodeURI 函数编码的字符串。 package { import flash.display.Sprite; public class DecodeURIExample extends Sprite { public function DecodeURIExample() { var uri:String = "http://www.example.com/application.jsp?user="; var encoded:String = encodeURI(uri); var decoded:String = decodeURI(encoded); trace(uri); // http://www.example.com/application.jsp?user= trace(encoded); // http://www.example.com/application.jsp?user=%3Cuser%20name='some%20user'%3E%3C/user%3E trace(decoded); // http://www.example.com/application.jsp?user= } } } decodeURIComponent () 函数 返回 String — 一个字符串,其中以前由 encodeURIComponent 函数转义的所有字符都还原为它们的未转义表示形 式。 public function decodeURIComponent(uri:String):String 将已编码的 URI 组件解码为字符串。 返回一个字符串,其中以前由 encodeURIComponent 函数转义的所有字 符都还原为它们的未编码表示形式。 ActionScript 语法参考手册 103 此函数与 decodeURI() 函数不同,它仅适用于 URI 字符串的一部分(称为 URI 组件)。 URI 组件是指出现在 某些特殊字符之间的任何文本,这些特殊字符称为组件分隔符 (: / ; and ? ). “http”和“www.adobe.com”是常见的 URI 组件示例。 此函数与 decodeURI() 的另一个重要区别是:由于此函数假定它处理的是 URI 组件,因此它会将表示特殊分隔 符字符 (; / ? : @ & = + $ , #) 的转义序列视为应进行解码的常规文本。 参数 uri:String — 一个使用 encodeURIComponent 函数编码的字符串。 encodeURI () 函数 返回 String — 一个字符串,其中某些字符已编码为 UTF-8 转义序列。 public function encodeURI(uri:String):String 将字符串编码为有效的 URI(统一资源标识符)。 将完整的 URI 转换为一个字符串,其中除属于一小组基本字符 的字符外,其它所有字符都编码为 UTF-8 转义序列。 参数 uri:String — 一个表示完整 URI 的字符串。 package { import flash.display.Sprite; public class EncodeURIExample extends Sprite { public function EncodeURIExample() { var uri:String = "http://www.example.com/application.jsp?user="; var encoded:String = encodeURI(uri); var decoded:String = decodeURI(encoded); trace(uri); // http://www.example.com/application.jsp?user= trace(encoded); // http://www.example.com/application.jsp?user=%3Cuser%20name='some%20user'%3E%3C/user%3E trace(decoded); // http://www.example.com/application.jsp?user= } } } encodeURIComponent () 函数 返回 String public function encodeURIComponent(uri:String):String 将字符串编码为有效的 URI 组件。 将 URI 的子字符串转换为以下字符串:除属于非常小的一组基本字符的字符 外,其它所有字符都编码为 UTF-8 转义序列。 encodeURIComponent() 函数与 encodeURI() 函数不同,它仅适用于 URI 字符串的一部分(称为 URI 组件)。 URI 组件是指出现在某些特殊字符之间的任何文本,这些特殊字符称为组件分隔符 (: / ; and ? ). “http”和 “www.adobe.com”是常见的 URI 组件示例。 此函数与 encodeURI() 的另一个重要区别是:由于此函数假定它处理的是 URI 组件,因此它会将特殊分隔符字 ActionScript 语法参考手册 104 符 (; / ? : @ & = + $ , #) 视为应进行编码的常规文本。 未编码的字符 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - _ . ! ~ * ' ( ) 参数 uri:String escape () 函数 返回 String — 一个 URL 编码的字符串 public function escape(str:String):String 将参数转换为字符串,并以 URL 编码格式对其进行编码,在这种格式中,大多数非字母数字的字符都替换为 % 十六进制序列。 当用于 URL 编码的字符串时,百分号 (%) 用于引入转义字符,不与模运算符 (%) 等效。 参数 str:String — 要转换为字符串并以 URL 编码格式进行编码的表达式。 int () 函数 返回 int — 转换后的整数值 public function int(value:Number):int 将给定数字值转换成整数值。 从小数点处截断十进制值。 参数 value:Number — 要转换成整数的值。 isFinite () 函数 返回 Boolean — 如果结果为有限数,则返回 true;如果为无穷大或负无穷大,则返回 false。 public function isFinite(num:Number):Boolean 如果该值为有限数,则返回 true,如果该值为 Infinity 或 -Infinity,则返回 false。 出现的 Infinity 或 -Infinity 指示存在错误的数学条件,例如除以 0。 参数 num:Number — 要计算为有限数或无穷大的数字。 isNaN () 函数 返回 Boolean — 如果该值为 NaN(非数字),则返回 true;否则返回 false。 public function isNaN(num:Number):Boolean 如果该值为 NaN(非数字),则返回 true。 isNaN() 函数可用于检查一个数学表达式是否成功地计算为一个数字。 ActionScript 语法参考手册 105 NaN 值是 Number 数据类型的特殊成员,用来表示“非数字”值。 注意:NaN 值不是 int 或 uint 数据类型的成员。 参数 num:Number — 要计算的数值或数学表达式。 isXMLName () 函数 返回 Boolean — 如果 str 参数为有效的 XML 名称,则返回 true;否则返回 false。 public function isXMLName(str:String):Boolean 确定指定字符串对于 XML 元素或属性是否为有效名称。 参数 str:String — 要计算的字符串。 Number () 函数 返回 Number — 转换后的数值。 public function Number(expression:Object):Number 将给定值转换成数字值。 下表显示各种输入类型的结果: 输入类型/值 示例 返回值 undefined Number(undefined) NaN null Number(null) 0 true Number(true) 1 false Number(false) 0 NaN Number(NaN) NaN 空字符串 Number("") 0 转换为数字的字符串 Number("5") 数字(例如 5) 没有转换为数字的字符串 Number("5a") NaN 参数 expression:Object — 要转换为数字的值。 Object () 函数 返回 Object — 由 value 参数指定的值。 public function Object(value:Object):Object 在 ActionScript 3.0 中,每个值都是一个对象,这意味着对某个值调用 Object() 会返回该值。 参数 value:Object — 要转换的对象、数字、字符串或布尔值。 parseFloat () 函数 返回 Number — 一个数字或 NaN(非数字)。 ActionScript 语法参考手册 106 public function parseFloat(str:String):Number 将字符串转换为浮点数。 此函数读取或分析 并返回字符串中的数字,直到此函数遇到不是初始数字一部分的字 符。 如果字符串不是以可以分析的数字开头,parseFloat() 将返回 NaN。 有效整数前面的空白将被忽略,有效整数 后面的非数字字符也将被忽略。 参数 str:String — 要读取并转换为浮点数的字符串。 parseInt () 函数 返回 Number — 一个数字或 NaN(非数字)。 public function parseInt(str:String, radix:uint = 0):Number 将字符串转换为整数。 如果参数中指定的字符串不能转换为数字,则此函数返回 NaN。 以 0x 开头的字符串被 解释为十六进制数字。 与 ActionScript 的早期版本不同,以 0 开头的整数不会被解释为八进制数字。 必须指定 8 的 基数才能解释为八进制数字。 有效整数前面的空白和 0 以及后面的非数字字符将被忽略。 参数 str:String — 要转换为整数的字符串。 radix:uint (default = 0) — 表示要分析的数字的基数(基)的整数。 合法值为 2 到 36。 String () 函数 返回 String — 为 expression 参数传递的值的字符串表示形式。 public function String(expression:Object):String 返回指定参数的字符串表示形式。 参数 expression:Object — 要转换为字符串的表达式。 trace () 函数 public function trace(... arguments):void 调试时显示表达式或写入日志文件。 单个跟踪语句可支持多个参数。 如果跟踪语句中的任何参数包含 String 之 外的数据类型,则跟踪函数将调用与该数据类型关联的 toString() 方法。 例如,如果该参数是一个布尔值,则跟踪函 数将调用 Boolean.toString() 并显示返回值。 参数 ... arguments — 要计算的一个或多个(逗号分隔)表达式。 对于多个表达式,输出中每个表达式之间都将插入 一个空格。 下面的示例使用类 TraceExample 来演示如何使用 trace() 方法输出简单字符串。 通常情况下,消息将输出到“调 试”控制台。 package { import flash.display.Sprite; public class TraceExample extends Sprite { public function TraceExample() { ActionScript 语法参考手册 107 trace("Hello World"); } } } uint () 函数 返回 uint — 转换后的整数值。 public function uint(value:Number):uint 将给定数字值转换成无符号整数值。 从小数点处截断十进制值。 参数 value:Number — 要转换成整数的值。 unescape () 函数 返回 String — 对 URL 编码的参数进行解码所得到的字符串。 public function unescape(str:String):String 将参数 str 作为字符串计算,从 URL 编码格式解码该字符串(将所有十六进制序列转换成 ASCII 字符),并返 回该字符串。 参数 str:String — 要转义的十六进制序列字符串。 XML () 函数 返回 XML — 一个 XML 对象,它包含转换后的对象中存放的值。 public function XML(expression:Object):XML 将对象转换成 XML 对象。 参数 expression:Object — 要转换为 XML 的对象。 XMLList () 函数 返回 XMLList — 一个 XMLList 对象,它包含转换后的对象中存放的值。 public function XMLList(expression:Object):XMLList 将某对象转换成 XMLList 对象。 参数 expression:Object — 要转换为 XMLList 对象的对象。

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档