符号运算符是指定如何组合、比较或修改表达式值的字符。
用法 | expression1 + expression2 |
加上数字表达式。两个表达式都为整数时,和为整数;其中一个或两个表达式为浮点数时,和为浮点数。
如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来,而不是进行求和。否则,如果表达式不是数字,Flash® Player 会将其转换为数字。
操作数结果示例 如何使用示例 下面的语句将整数 2 和 3 相加:
下面的语句将浮点数 2.5 与 3.25 相加:
trace(2.5 + 3.25); // 5.75
下例说明如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来:
trace("Number " + 8 + 0); // Number 80
与动态和输入文本字段相关联的变量是字符串数据类型。在以下示例中,变量 deposit
是舞台上的一个输入文本字段。在用户输入存款数目后,该脚本尝试将 deposit
添加到 oldBalance
。然而,由于 deposit
的类型是 String,因此脚本连接(合并成一个字符串)变量的值,而不是对它们求和。
var oldBalance:Number = 1345.23;
var currentBalance = deposit_txt.text + oldBalance;
trace(currentBalance);
例如,如果用户在 deposit 文本字段中输入 475,则 trace()
语句将值 4751345.23 发送到撌涑觥泵姘濉若要更正这一点,请使用 Number()
函数将字符串转换为数字,如下所示:
var oldBalance:Number = 1345.23;
var currentBalance:Number = Number(deposit_txt.text) + oldBalance;
trace(currentBalance);
另请参见
用法 | expression1 += expression2 |
将 expression1 + expression2
的值赋给 expression1
。例如,以下两个语句的结果是相同的:
x += y;
x = x + y;
加法运算符 (+) 的所有规则适用于加法赋值运算符 (
+=
)。
操作数结果示例 如何使用示例 下例说明加法赋值运算符 (
+=
) 的数值用法:
var x:Number = 5;
var y:Number = 10;
x += y;
trace(x); // 15
另请参见
用法 | myArray = [a0, a1,...aN]
myArray[i] = value
myObject[propertyName]
|
用指定的元素(a0
等)初始化一个新数组或多维数组,或者访问数组中的元素。数组访问运算符使您能够动态地设置和检索实例、变量和对象的名称。它还使您能够访问对象属性。
用法 1:数组是一个对象,其属性称为元素,这些元素由名为索引的数字逐一标识。创建数组时,需用数组访问 ([]) 运算符(即方括号)括住元素。一个数组可以包含各种类型的元素。例如,下面这个名为 employee
的数组包含三个元素;第一个元素是一个数字,另外两个元素是字符串(在引号内):
var employee:Array = [15, "Barbara", "Jay"];
可以通过嵌套方括号来模拟多维数组。您最多可以嵌套深度为 256 级的数组。以下代码创建一个名为
ticTacToe
且含有三个元素的数组;其中每个元素也是一个具有三个元素的数组:
var ticTacToe:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
/* Select Debug > List Variables in test mode
to see a list of the array elements.*/
用法 2:用方括号 ([]) 括住每个元素的索引可直接对其进行访问;这样可以向数组添加新元素以及更改或检索现有元素的值。数组中第一个索引始终是 0,如下例所示:
var my_array:Array = new Array();
my_array[0] = 15;
my_array[1] = "Hello";
my_array[2] = true;
可以使用方括号来添加第四个元素,如下例所示:
可以使用方括号访问多维数组中的元素。第一对括号标识原始数组中的元素,第二对括号标识嵌套数组中的元素。下面的
trace()
语句查找第二个数组(索引 1)的第三个元素(索引 2)。
var ticTacToe:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
trace(ticTacToe[1][2]); // 6
用法 3:可以使用数组访问运算符来动态设置和检索对象的属性值:
var obj:Object = new Object();
obj.prop1 = "foo";
trace(obj["prop" + 1]); // foo
obj.prop2 = "bar";
for (j in obj) {
trace(obj[j]);
}
/* Output of for loop:
foo
bar */
操作数 | myArray:Object —
数组的名称。
|
| a0, a1,...aN:Object —
数组中的元素;任何本机类型或对象实例,包括嵌套的数组。
|
| i:Number —
大于等于 0 的整数索引。
|
| myObject:Object —
对象的名称。
|
| propertyName:String —
为对象的属性命名的字符串。
|
结果 | Object — 用法 1:对一个数组的引用。 用法 2:数组中的一个值;本机类型或对象实例(包括数组实例)。 用法 3:对象的一个属性;本机类型或对象实例(包括数组实例)。 |
示例 如何使用示例 下例说明创建新的空 Array 对象的两种方法;第一行使用方括号:
var my_array:Array = [];
var my_array:Array = new Array();
下例创建一个名为 employee_array
且含有三个元素的数组,并更改该数组中的第三个元素。
var employee_array = ["Barbara", "George", "Mary"];
trace(employee_array); // Barbara,George,Mary
employee_array[2] = "Sam";
trace(employee_array); // Barbara,George,Sam
在下例中,计算括号中的表达式,并将结果用作要从
obj
对象中检索的变量的名称:
var obj:Object = new Object();
obj.prop1 = "foo";
obj.prop2 = "bar";
for (var i:int = 1;i < 3;i++) {
trace(obj["prop"+i]);
}
/* Output of for loop:
foo
bar */
另请参见
用法计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。如果第一个操作数是该数据类型的成员,则结果为第一个操作数。否则,结果为 null
值。
第二个操作数所用表达式的计算结果必须为数据类型。
操作数 | expression:* —
要针对指定的数据类型进行检查的值。
|
| datatype:Class —
用于计算 expression 操作数的数据类型。不能使用特殊的 * 类(即无类型)。
|
结果 | Object — 如果 expression 是在 datatype 中指定的数据类型的成员,则结果为 expression 。否则,结果为 null 值。 |
示例 如何使用示例
下例创建一个名为
myArray
的简单数组,并将
as
运算符用于各种数据类型。
public var myArray:Array = ["one", "two", "three"];
trace(myArray as Array); // one,two,three
trace(myArray as Number); // null
trace(myArray as int); // null
另请参见
用法 | expression1 = expression2 |
将 expression2
(右侧的操作数)的值赋予 expression1
中的变量、数组元素或属性。可以按值也可以按引用进行赋值。按值进行赋值将复制 expression1
的实际值并将其存储在 expression2
中。当 expression2
是原始值时(这意味着它的数据类型为 Boolean、Number、int、uint 或 String),使用按值进行赋值。按引用进行赋值将把对 expression2
的引用存储在 expression1
中。按引用进行赋值通常与 new
运算符一起使用。new
运算符将在内存中创建一个对象,并将对内存中该位置的引用分配给一个变量。
注意:在 ActionScript 3.0 中,所有的值(包括原始值)都是对象,所有的赋值都通过引用来完成,但是原始对象具有一些特殊运算符,这些运算符使它们如同进行了按值赋值。
操作数 | expression1:* —
变量、数组元素或对象的属性。
|
| expression2:* —
任何类型的值。
|
结果示例 如何使用示例 下面的示例使用按值进行赋值,将值 5 赋予变量
z
。
下面的示例使用按值进行赋值,将值“
hello
”赋予变量
z
:
var x:String;
x = "hello";
下例使用按引用赋值,以创建
moonsOfJupiter
变量,该变量包含对新创建的 Array 对象的引用。然后使用按值进行赋值,将值“Callisto”复制到变量
moonsOfJupiter
所引用的数组的第一个元素:
var moonsOfJupiter:Array = new Array();
moonsOfJupiter[0] = "Callisto";
下例使用按引用进行赋值来创建一个新对象,并将对该对象的引用赋予变量
mercury
。然后使用按值进行赋值,将值 3030 赋予
mercury
对象的
diameter
属性:
var mercury:Object = new Object();
mercury.diameter = 3030; // in miles
trace(mercury.diameter); // 3030
下例在上一示例的基础上创建名为
merkur
(
mercury 在德语中的对应词)的变量,并对它赋予
mercury
的值。这样,就创建了引用内存中同一对象的两个变量,也就是说您可以使用任一变量访问该对象的属性。然后可以更改
diameter
属性以使用千米而不是英里:
var merkur:Object = mercury;
merkur.diameter = 4878; // in kilometers
trace(mercury.diameter); // 4878
另请参见
用法标识 XML 或 XMLList 对象的属性。例如,myXML.@id
标识 myXML
XML 对象的名为 id
的属性。还可以使用以下语法访问属性:myXML.attribute("id")
、myXML["@id"]
和 myXML.@["id"]
。建议使用 myXML.@id
语法。若要返回所有属性名的 XMLList 对象,请使用 @*
。若要返回名称与 ActionScript 保留字相匹配的属性,请使用 attribute()
方法,而不要使用 @
运算符。
操作数示例 如何使用示例 第一个示例说明如何使用
@
(at 符号)运算符来标识元素的属性:
var myXML:XML =
<item id = "42">
<catalogName>Presta tube</catalogName>
<price>3.99</price>
</item>;
trace(myXML.@id); // 42
下一个示例返回所有的属性名:
var xml:XML =<example id='123' color='blue'/>
var xml2:XMLList = xml.@*;
trace(xml2 is XMLList); // true
trace(xml2.length()); // 2
for (var i:int = 0; i < xml2.length(); i++)
{
trace(typeof(xml2[i])); // xml
trace(xml2[i].nodeKind()); // attribute
trace(xml2[i].name()); // id and color
}
下一个示例返回名称与 ActionScript 中的保留字相匹配的属性。不能使用
xml.@class
语法(因为
class
是 ActionScript 中的保留字)。需要使用
xml.attribute("class")
语法:
var xml:XML = <example class='123'/>
trace(xml.attribute("class"));
另请参见
用法 | expression1 & expression2 |
将 expression1
和 expression2
转换为 32 位无符号整数,并对整数参数的每一位执行布尔 AND 运算。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。
正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果示例 如何使用示例 下例通过比较数字的位表示形式来针对 13(二进制的 1101) 和 11(二进制的 1011)执行按位 AND 运算。所得到的整数由一系列位组成,只有当位于同一位置的操作数的位都是 1 时,所得到整数中的每一位才设置为 1。
var insert:Number = 13;
var update:Number = 11;
trace(insert & update); // 9 (or 1001 binary)
对 13(二进制的 1101)11(二进制的 1011)执行按位 AND 的结果是 9,因为这两个数字中只有第一个和最后一个位置具有数字 1。
1101
& 1011
----
1001
下例说明返回值转换的行为:
trace(0xFFFFFFFF); // 4294967295
trace(0xFFFFFFFF & 0xFFFFFFFF); // -1
trace(0xFFFFFFFF & -1); // -1
trace(4294967295 & -1); // -1
trace(4294967295 & 4294967295); // -1
另请参见
用法 | expression1 &= expression2 |
对 expression1
赋予 expression1
& expression2
的值。例如,以下两个表达式是等效的:
x &= y;
x = x & y;
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果 | int — expression1 & expression2 的值。 |
示例 如何使用示例 下例将值 9 赋予
x
:
var x:Number = 15;
var y:Number = 9;
trace(x &= y); // 9
另请参见
用法 | expression1 << shiftCount |
将 expression1
和 shiftCount
转换为 32 位整数,并将 expression1
中的所有位向左移动由 shiftCount
转换所得到的整数指定的位数。因执行此运算而空出的位的位置将用 0 填充,移出左端的位将被舍去。将一个值向左侧移动一位与这个值乘以 2 等效。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
如果结果是负整数,那么,当您试图将结果赋予类型为 uint
的变量时,会出现运行时错误。尽管 ActionScript 没有“按位向左移位”运算符,但您可以使用 uint(expression1 << shiftCount)
来获得同样的效果并避免出现运行时错误:
var num1:uint = 0xFF;
var num2:uint = uint(num1 << 24); // uint() prevents runtime error
操作数 | expression1:Number —
要向左移位的数字或表达式。
|
| shiftCount:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
结果示例 如何使用示例 在下例中,整数 1 向左移 10 位:
按位左移位运算的结果是 1024。这是因为十进制的 1 等于二进制的 1,二进制的 1 向左移 10 位是二进制的 10000000000,而二进制的 10000000000 就是十进制的 1024:
二进制的 00000000001
<< 10 decimal
--------------
二进制的 10000000000 等于十进制的 1024
在下例中,整数 7 向左移 8 位:
按位左移位运算的结果是 1792。这是因为十进制的 7 等于二进制的 111,二进制的 111 向左移 8 位是二进制的 11100000000,而二进制的 11100000000 就是十进制的 1792:
二进制的 00000000111
<< 8 decimal
--------------
二进制的 11100000000 等于十进制的 1792
下面的 trace
语句说明已经将位向左移三位:
// 1 binary == 0001
// 8 binary == 1000
trace(1 << 3); // 8
另请参见
用法 | expression1 <<= expression2 |
执行按位向左移位 (<<=
) 运算,并将内容作为结果存储在 expression1
中。下面的两个表达式是等效的:
A <<= B
A = (A << B)
操作数 | expression1:Number —
要向左移位的数字或表达式。
|
| expression2:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
结果示例 如何使用示例 在下例中,使用按位向左移位并赋值运算符 (<<=) 将所有位向左移一位:
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
另请参见
用法将 expression
转换为一个 32 位带符号整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。此运算符也称为对一求补运算符或按位求补运算符。
例如,十六进制值 0x7777 表示为二进制数:
0111011101110111
该十六进制值 ~0x7777 的按位取反的二进制数为:
1000100010001000
在十六进制中,它是 0x8888。因此,~0x7777 就是 0x8888。
按位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数结果示例 如何使用示例 下例说明如何将按位 NOT (
~
) 运算符与特征位结合使用:
var ReadOnlyFlag:int = 0x0001; // defines bit 0 as the read-only flag
var flags:int = 0;
trace(flags);
/* To set the read-only flag in the flags variable,
the following code uses the bitwise OR:
*/
flags |= ReadOnlyFlag;
trace(flags);
/* To clear the read-only flag in the flags variable,
first construct a mask by using bitwise NOT on ReadOnlyFlag.
In the mask, every bit is a 1 except for the read-only flag.
Then, use bitwise AND with the mask to clear the read-only flag.
The following code constructs the mask and performs the bitwise AND:
*/
flags &= ~ReadOnlyFlag;
trace(flags);
// 0 1 0
另请参见
用法 | expression1 | expression2 |
将 expression1
和 expression2
转换为 32 位无符号整数,并在 expression1
或 expression2
的对应位为 1 的每个位的位置上放置 1。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数结果示例 如何使用示例 下面是一个按位 OR (
|
) 运算的示例:
// 15 decimal = 1111 binary
var a:Number = 15;
// 9 decimal = 1001 binary
var b:Number = 9;
// 1111 | 1001 = 1111
trace(a | b); // returns 15 decimal (1111 binary)
请勿将单个
|
(按位 OR)与
||
(逻辑 OR)混淆。
另请参见
用法 | expression1 |= expression2 |
将 expression1 | expression2
的值赋给 expression1
。例如,下面两个语句是等效的:
x |= y;
x = x | y;
操作数结果示例 如何使用示例 下例使用按位 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)
另请参见
用法将 expression
和 shiftCount
转换为 32 位整数,并将 expression
中的所有位向右移动由 shiftCount
转换所得到的整数指定的位数。移到右端以外的位将被舍去。如果要保留原始表达式的符号,那么,当 expression
的最高有效位(最左端的位)为 0 时,左侧的位都填补 0;如果最高有效位为 1,左侧的位都填补 1。将一个值右移一位等效于将它除以 2 并舍去余数。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数 | expression:Number —
要向右移位的数字或表达式。
|
| shiftCount:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
结果示例 如何使用示例 下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255:
var a:Number = 65535 >> 8;
trace(a); // 255
这是由于十进制的 65535 等于二进制的 00000000000000001111111111111111(十六个 0,后跟十六个 1);向右移 8 位将导致至少舍去 8 个最低有效位(最右边的 8 位)。因为 65535 是正数,所以,通过移位而空出的位的位置(最左边的 8 位)将填充 0。结果是二进制的 00000000000000000000000011111111(二十四个 0,后跟八个 1),这表示 32 位整数 255。
00000000000000001111111111111111 binary (65535 decimal)
>> 8 decimal
--------------------
00000000000000000000000011111111 binary (255 decimal)
下例将 -8 转换为 32 位整数,然后右移 1 位,结果为十进制值 -4:
var a:Number = -8 >> 1;
trace(a); // -4
这是由于十进制的 -8 等于二进制的 11111111111111111111111111111000(二十九个 1,后跟三个 0);向右移一位将导致至少舍去一个最低有效位(最右边的位)。因为 -8 是负数,所以通过移位而空出的位的位置(最左边的位)将填充 1。结果是 11111111111111111111111111111100(三十个 1,后跟两个 0),这表示 32 位整数 -4。
11111111111111111111111111111000 binary (-8 decimal)
>> 1 decimal
--------------------
11111111111111111111111111111100 binary (-4 decimal)
另请参见
用法 | expression >>= shiftCount |
执行按位向右移位运算,并将结果存储在 expression
中。
下面的两个语句是等效的:
A >>= B;
A = (A >> B);
操作数 | expression:Number —
要向右移位的数字或表达式。
|
| shiftCount:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
结果示例 如何使用示例 下面的代码使用按位向右移位并赋值运算符 (
>>=
):
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.
另请参见
用法 | expression >>> shiftCount |
此运算符与按位向右移位运算符 (>>
) 基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位无符号整数,因此结果将是 0 到 4294967295 范围中的一个整数。
注意:ActionScript 没有辅助的“按位向左移位”运算符,但您可以使用 uint(expression << shiftCount)
来获得同样的效果。
操作数 | expression:Number —
要向右移位的数字或表达式。
|
| shiftCount:Number —
转换为介于 0 和 31 之间的整数的数字或表达式。
|
结果示例 如何使用示例 下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1 >>> 1;
trace(a); // 2147483647
这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。
另请参见
用法 | expression >>>= shiftCount |
执行无符号按位向右移位运算,并将结果存储在 expression
中。下面的两个语句是等效的:
A >>>= B;
A = (A >>> B);
操作数 | expression:Number —
要向右移位的数字或表达式。
|
| shiftCount:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
结果示例 如何使用示例 下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1;
a >>>= 1;
trace(a); // 2147483647
这是因为十进制的 -1 是二进制的 11111111111111111111111111111111(32 个 1),当向右(无符号)移 1 位时,最低有效位(最右端的位)被去掉,而最高有效位(最左端的位)被填补上 0。结果为二进制的 01111111111111111111111111111111,表示 32 位整数 2147483647。
另请参见
用法 | expression1 ^ expression2 |
将 expression1
和 expression2
转换为 32 位无符号整数,并在 expression1
或 expression2
中对应位为 1(但不是在两者中均为 1)的每个位的位置上放置 1。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果示例 如何使用示例 下面的示例对十进制的 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)
另请参见
用法 | expression1 ^= expression2 |
将 expression1 ^ expression2
的值赋给 expression1
。例如,下面两个语句是等效的:
x ^= y
x = x ^ y
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果示例 如何使用示例 下例说明按位 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)
另请参见
用法分隔一行或多行脚本注释。出现在开始分隔符 (/*
) 和结束分隔符 (*/
) 之间的字符被 ActionScript 编译器解释为注释并忽略。这些分隔符用于标识多个连续行的注释;对于单行注释,请使用 //
分隔符。
如果省略结束块注释分隔符 (*/
) 或者尝试嵌套注释,则将收到错误消息。使用了开始分隔符 (/*
) 之后,无论在第一个结束分隔符之前放置了多少个开始分隔符,第一个结束分隔符 (*/
) 都会结束此注释。
操作数示例 如何使用示例 下面的脚本在脚本的开头使用块注释分隔符:
/* 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 */
另请参见
用法 | myXML= <{tagName} {attributeName} = {attributeValue}>{content}</{tagName}> |
计算在 XML 或 XMLList 初始值设定项中使用的表达式。XML 或 XMLList 初始值是赋予类型为 XML 或 XMLList 的变量的字面值。由 XML {
和 }
运算符隔开的表达式可以用在 XML 或 XMLList 初始值中,而不能用在文本名称或值中。可以使用表达式来代替 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}</{tagname}>;
trace(x.toXMLString()); // <item id="5">Chicken</item>
另请参见
用法访问 XML 或 XMLList 对象的属性或特性。方括号运算符允许您访问不能用点运算符 (.
) 访问的属性名。
操作数 | myXML:* —
一个 XML 或 XMLList 对象。
|
| expression:* —
计算结果为 XML 标签名称或属性名称的表达式。
|
示例 如何使用示例 下例说明如何使用
[
和
]
运算符来访问 而不能用点运算符访问的 XML 属性:
var myXML:XML = <a><foo-bar>44</foo-bar></a>;
trace(myXML["foo-bar"]);
另请参见
用法 | (expression1, expression2[, expressionN... ]) |
计算 expression1
,然后计算 expression2
,依此类推。此运算符主要与 for
循环语句一起使用,并且通常与括号 ()
运算符一起使用。
操作数 | expression1:* —
要计算的表达式。
|
| expression2:* —
要计算的表达式。
|
| expressionN:* —
要计算的任意数目的其它表达式。
|
结果示例 如何使用示例 下例在
for
循环中使用逗号运算符 (
,
):
for (i = 0, j = 0; i < 3 && j < 3; i++, j+=2) {
trace("i = " + i + ", j = " + j);
}
// output:
// i = 0, j = 0
// i = 1, j = 2
下例使用逗号运算符但不使用括号运算符,来说明逗号运算符的优先级低于赋值运算符 (
=
) 运算符:
var v:Number = 0;
v = 4, 5, 6;
trace(v); // 4
下例使用逗号运算符以及括号,并说明逗号运算符返回最后一个表达式的值:
var v:Number = 0;
v = (4, 5, 6);
trace(v); // 6
下例使用逗号运算符但不使用括号,并说明逗号运算符导致按顺序计算所有的表达式。第一个表达式
v + 4
为变量
v
赋值,因为赋值运算符 (=) 的优先级高于逗号运算符。计算第二个表达式
z++
,并将
z
加一。
var v:Number = 0;
var z:Number = 0;
v = v + 4 , z++, v + 6;
trace(v); // 4
trace(z); // 1
下例与上一个示例基本相同,但是添加了括号,这会改变运算顺序,以便先计算逗号运算符再计算赋值运算符 (
=
):
var v:Number = 0;
var z:Number = 0;
v = (v + 4, z++, v + 6);
trace(v); // 6
trace(z); // 1
另请参见
用法 | expression1 + expression2 |
连接(合并)字符串。如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来。
如果这两个表达式都是数字,则该运算符充当加法运算符。
操作数结果示例 如何使用示例 下例连接两个字符串。
var lastName:String = "Cola";
var instrument:String = "Drums";
trace(lastName + " plays " + instrument); // Cola plays Drums
下例说明如果其中一个表达式为字符串,则所有其它表达式都被转换为字符串,然后连接起来:
trace("Number " + 8 + 0); // Number 80
下例说明,由于字符串表达式右侧的数值已转换为字符串,因此不对它们进行求和:
var a:String = 3 + 10 + "asdf";
trace(a); // 13asdf
var b:String = "asdf" + 3 + 10;
trace(b); // asdf310
另请参见
用法 | expression1 + expression2 |
将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。只有当这两个操作数都是 XML 或 XMLList 值时,结果才为 XMLList 对象。
操作数 | expression1:* —
一个 XML 或 XMLList 值。
|
| expression2:* —
一个 XML 或 XMLList 值。
|
结果示例 如何使用示例 下例说明如何使用 XMLList (
+
)(连接)运算符:
var x1:XML =
<employee id = "42">
<firstName>Joe</firstName>
<lastName>Smith</lastName>
</employee>;
var x2:XML =
<employee id = "43">
<firstName>Susan</firstName>
<lastName>Jones</lastName>
</employee>;
var myXMLList:XMLList = x1 + x2;
trace(myXMLList.toXMLString());
trace
语句可生成以下输出:
<employee id = "42">
<firstName>Joe</firstName>
<lastName>Smith</lastName>
</employee>
<employee id = "43">
<firstName>Susan</firstName>
<lastName>Jones</lastName>
</employee>
另请参见
用法 | expression1 += expression2 |
将 expression1 + expression2
的值赋给 expression1
。例如,以下两个语句的结果是相同的:
x += y;
x = x + y;
连接运算符 (
+
) 的所有规则均适用于连接赋值运算符 (
+=
)。请注意,对
TextField
的
text
属性使用连接赋值(即
someTextField.text += moreText
)的效率远不如
TextField.appendText()
,尤其是对于包含大量内容的
TextField
而言。
操作数结果示例 如何使用示例 下例使用
+=
运算符和字符串表达式:
var x1:String = "My name is ";
x1 += "Gilbert";
trace(x1); // My name is Gilbert
另请参见
用法 | expression1 += expression2 |
对 XMLList 对象 expression1
赋予 expression1 + expression2
的值。例如,以下两个语句的结果是相同的:
x += y;
x = x + y;
XMLList 连接运算符 (
+
) 的所有规则均适用于 XMLList 连接赋值运算符 (
+=
)。
操作数 | expression1:XMLList —
要向其中添加新值的 XMLList 对象。
|
| expression2:* —
一个 XML 或 XMLList 值。
|
示例 如何使用示例 下例说明如何使用 XMLList 连接赋值运算符 (
+=
):
var x1:XML = <location>Athens</location>;
var x2:XML = <location>Paris</location>;
myXMLList = x1 + x2;
var x3:XML = <location>Springfield</location>;
myXMLList += x3;
trace(myXMLList.toXMLString());
trace
语句可生成以下输出:
<location>Athens</location>
<location>Paris</location>
<location>Springfield</location>
另请参见
用法 | expression1 ? expression2 : expression3 |
计算 expression1
,如果 expression1
的值为 true
,则结果为 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
下面的示例说明简写的条件语句:
var timecode:String = (new Date().getHours() < 11) ? "AM" : "PM";
trace(timecode);
也可以按普通形式编写该条件语句,如下例所示:
if (new Date().getHours() < 11) {
var timecode:String = "AM";
} else {
var timecode:String = "PM";
}
trace(timecode);
另请参见
用法 | --expression expression-- |
操作数减去 1。该操作数可以是变量、数组中的元素或对象的属性。此运算符的预先递减格式 (--expression
) 从expression
中减去 1,然后返回结果。此运算符的滞后递减格式 (expression--
) 从 expression
中减去 1,然后返回 expression
的初始值(即减去 1 之前的值)。
操作数 | expression:Number —
一个数字或计算结果为数字的变量。
|
结果示例 如何使用示例 此运算符的预先递减格式将
x
递减为 2 (
x
-
1 = 2
),并将结果作为
y
返回:
var x:Number = 3;
var y:Number = --x; // y is equal to 2
此运算符的滞后递减格式将
x
递减为 2 (
x
-
1 = 2
),并将
x
的初始值作为结果
y
返回:
var x:Number = 3;
var y:Number = x--; // y is equal to 3
下例从 10 到 1 循环,循环的每次迭代将计数器变量
i
减 1:
for (var i = 10; i > 0; i--) {
trace(i);
}
另请参见
用法破坏由 reference
指定的对象属性;如果在运算完成后该属性不存在,则结果为 true
;否则,结果为 false
。如果对不存在的属性或类中未定义的动态属性调用 delete
运算符,则该运算符返回 true
。
如果 reference
参数不能删除,delete
运算符可能会失败并返回 false
。不能删除用 var
语句声明的固定属性或变量。固定属性是类定义中的变量或方法。
除非类是运行时添加的动态类,否则不能使用 delete
运算符破坏该类的属性。不能使用 delete
破坏密封类的属性。而应当将该属性设置为 null
。
注意:尽管不能删除对象,但是可以通过删除对某个对象的所有引用来使该对象符合垃圾回收条件。对某个对象最常见的引用就是指向该对象的变量。可以通过将该变量设置为 null
来删除这样的引用。垃圾回收器会删除没有引用的所有对象。
操作数结果 | Boolean — 如果删除成功,则值为 true ;如果删除失败,则值为 false 。 |
示例 如何使用示例 下例删除对象的一个属性:
// create the new object "account"
var account:Object = new Object();
// assign property name to the account
account.name = "Jon";
// delete the property
delete account.name;
trace(account.name); // undefined
// delete a nonexistent property
var fooDeleted:Boolean = delete account.foo;
trace(fooDeleted); // true
下例删除数组元素的值,但是 length
属性的值不变:
var my_array:Array = new Array();
my_array[0] = "abc"; // my_array.length == 1
my_array[1] = "def"; // my_array.length == 2
my_array[2] = "ghi"; // my_array.length == 3
// my_array[2] is deleted, but Array.length is not changed
delete my_array[2];
trace(my_array.length); // 3
trace(my_array); // abc,def,
下例说明如何将从 delete
返回的布尔值用作以后代码执行的条件。请注意,如果某项已被删除,则对该项再次调用 delete
将返回 false
。
var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];
trace(my_array) // outputs: undefined,undefined,ghi
另请参见
用法删除由 reference
指定的 XML 元素或属性。
在与 XMLList 操作数一起使用时,delete
运算符的结果总是为 true
,因为 XMLList 操作数总是引用有效(尽管有可能为空)的 XMLList 对象。
操作数 | reference:XMLList —
用来指定要删除的 XML 元素或属性的 XMLList 对象。
|
结果 | Boolean — 如果删除成功,则值为 true ;如果删除失败,则值为 false 。 |
示例 如何使用示例 下例说明如何依次删除一个属性、一个元素、多个元素:
var x1:XML = <x1>
<a id = "52">AYY</a>
<a>AYY 2 </a>
<b>BEE</b>
<c>CEE</c>
</x1>;
trace(x1.toXMLString());
trace("___________");
delete x1.a.@id;
trace(x1.toXMLString());
trace("___________");
delete x1.b;
trace(x1.toXMLString());
trace("___________");
delete x1.a;
trace(x1.toXMLString());
输出如下所示:
<x1>
<a id="52">AYY</a>
<a>AYY 2</a>
<b>BEE</b>
<c>CEE</c>
</x1>
___________
<x1>
<a>AYY</a>
<a>AYY 2</a>
<b>BEE</b>
<c>CEE</c>
</x1>
___________
<x1>
<a>AYY</a>
<a>AYY 2</a>
<c>CEE</c>
</x1>
___________
<x1>
<c>CEE</c>
</x1>
下例说明如何删除某个元素的所有内容(包括属性和子元素),而不删除该元素本身:
var xml:XML =
<order>
<item id="121">hamburger</item>
<item id="122">fries</item>
<item id="123">chocolate shake</item>
</order>;
delete xml.item[1].*;
delete xml.item[1].@*;
trace(xml);
此示例的输出如下所示:
<order>
<tem id="121">hamburger</item>
<item/>
<item id="123">chocolate shake</item>
</order>
用法 | myXML..childElement1..@attributeName |
定位到 XML 或 XMLList 对象的后代元素,或(结合使用 @ 运算符)查找匹配的后代属性。匹配元素或属性不必是 XML 或 XMLList 对象的子级,它们可以位于树中的更低位置(例如,孙级)。结果是 XMLList 对象,因为有多个子元素或子属性可以匹配。
节点在所返回的 XMLList 对象中的顺序由深度优先遍历结果确定。例如,请看以下例子:
var myXML:XML = <a>
<b>one
<c>
<b>two</b>
</c>
</b>
<b>three</b>
</a>;
trace(myXML..b[0].toXMLString());
trace("______________");
trace(myXML..b[1].toXMLString());
trace("______________");
trace(myXML..b[2].toXMLString());
将生成如下输出:
<b>
one
<c>
<b>two</b>
</c>
</b>
______________
<b>two</b>
______________
<b>three</b>
若要返回名称与 ActionScript 保留字相匹配的后代,请使用 XML.descendants()
方法,而不要使用后代运算符 (..),如下例所示:
var xml:XML =
<enrollees>
<student id="239">
<class name="Algebra" />
<class name="Spanish 2"/>
</student>
<student id="206">
<class name="Trigonometry" />
<class name="Spanish 2" />
</student>
</enrollees>;
trace(xml.descendants("class"));
操作数 | myXML:Object —
XML 或 XMLList 对象。
|
| childElement1_or_attributeName —
XML 属性的名称或某个特性的名称。
|
示例 如何使用示例 下例说明如何使用后代存取器运算符 (..) 返回 XML 对象的后代元素以及元素的属性:
var myXML:XML =
<employees>
<employee id = "42">
<firstName>Billy</firstName>
<lastName>Einstein</lastName>
</employee>
<employee id = "43">
<firstName>Sally</firstName>
<lastName>Shostakovich</lastName>
</employee>
</employees>
trace(myXML..firstName);
// <firstName>Billy</firstName>
// <firstName>Sally</firstName>
trace(myXML..@id); //4243
另请参见
用法 | expression1 / expression2 |
expression1
除以 expression2
。除法运算的结果为双精度浮点数。
操作数 | expression:Number —
一个数字或计算结果为数字的变量。
|
结果示例 如何使用示例 下例说明被除数是正数、负数或 0 时,除以 0 时得到的不同结果。
trace(3/0); // Infinity
trace(-3/0); // -Infinity
trace(0/0); // NaN
另请参见
用法 | expression1 /= expression2 |
将 expression1 / expression2
的值赋给 expression1
。例如,下面两个语句是等效的:
x /= y;
x = x / y;
操作数 | expression1:Number —
一个数字或计算结果为数字的变量。
|
| expression2:Number —
一个数字或计算结果为数字的变量。
|
结果示例 如何使用示例 下面的代码说明如何将除法赋值运算符 (
/=
) 与变量和数字结合使用:
var a:Number = 10;
var b:Number = 2;
a /= b; trace(a); // 5
另请参见
用法 | object.property_or_method |
访问类变量和方法,获取并设置对象属性并分隔导入的包或类。
操作数 | object:Object —
类的实例。此对象可以是任何内置 ActionScript 类的实例或者您所定义类的实例。此操作数总是在点 (.) 运算符的左侧。
|
| property_or_method:* —
与对象相关联的属性或方法的名称。内置类的所有有效方法和属性都会在该类的方法和属性摘要表中列出。此操作数总是在点 (.) 运算符的右侧。
|
结果示例 如何使用示例 下例在导入 Timer 类时将点运算符用作分隔符。
import flash.utils.Timer;
下例创建一个通用对象并使用点运算符来添加新属性。
var obj:Object = new Object();
obj.propertyA = "hello";
trace(obj.propertyA); // hello
另请参见
用法 | myXML.childElement
myXML.@attributeName |
定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。返回的对象是 XMLList,因为有多个子元素或子属性可以匹配。
若要返回名称与 ActionScript 保留字相匹配的元素,请使用 XML.elements()
方法或 XML.descendants()
方法,而不要使用 XML 点 (.) 运算符,如下例所示:
var xml:XML =
<student id="206">
<class name="Trigonometry" />
<class name="Spanish 2" />
</student>;
trace(xml.elements("class"));
trace(xml.descendants("class"));
操作数 | myXML:Object —
XML 或 XMLList 对象。
|
| childElement:* —
XML 属性的名称。
|
| attributeName:* —
属性的名称。
|
结果示例 如何使用示例 下例说明如何使用点 (.) 运算符来返回 XML 对象的子元素以及元素的属性:
var myXML:XML =
<employee id = "42">
<firstName>Billy</firstName>
<lastName>Einstein</lastName>
</employee>;
trace(myXML.firstName); // Billy
trace(myXML.@id); // 42
另请参见
用法 | expression1 == expression2 |
测试两个表达式是否相等。如果表达式相等,则结果为 true
。
如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:
- 如果 int、uint 和 Boolean 类型具有相同的值,则将其值视为相等。
- 具有相匹配的值的两个数字被视为相等,除非两个值都为
NaN
。
- 如果两个操作数的值都为
null
或 undefined
,则将它们视为相等。
- 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
- 对于 XML 对象:
- 如果一个操作数是文本或属性节点,而另一个操作数具有简单的内容,则使用
toString()
方法可将两个操作数转换为字符串,如果生成的字符串相匹配,则将这两个操作数视为相等。
- 否则,仅当两个对象的限定名、特性和子属性都匹配时,才会被视为相等。
- 如果 XMLList 对象具有相同数目的属性,并且属性的顺序和值都匹配,则可将其视为相等。
- 对于 Namespace 对象,如果两个对象的
uri
属性相匹配,则其值被视为相等。
- 对于 QName 对象,如果两个对象的
uri
属性相匹配,并且两个对象的 localName
属性也相匹配,则其值被视为相等。
- 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
如果这两个操作数的数据类型不匹配,则结果为
false
,但在以下情况下除外:
- 操作数的值为
undefined
和 null
,在这种情况下,结果为 true
。
- 自动数据类型转换将数据类型为 String、Boolean、int、uint 和 Number 的值转换为兼容的类型,并且转换后的值相等,在这种情况下,操作数被视为相等。
- 一个操作数的类型为 XML,并且包含简单内容 (
hasSimpleContent() == true
),在用 toString()
方法将这两个操作数都转换为字符串之后,所生成的字符串相匹配。
- 一个操作数的类型为 XMLList,并且满足以下任一条件:
- XMLList 对象的
length
属性为 0,另一个对象为 undefined
。
- XMLList 对象的
length
属性为 1,XMLList 对象的一个元素与另一个操作数相匹配。
操作数 | expression1:Object —
一个数字、字符串、布尔值、变量、对象、数组或函数。
|
| expression2:Object —
一个数字、字符串、布尔值、变量、对象、数组或函数。
|
结果 | Boolean — 如果这两个表达式相等,则值为 true ,否则为 false 。 |
示例 如何使用示例 下例将等于运算符 (
==
) 与
if
语句结合使用:
var a:String = "David"
var b:String = "David";
if (a == b) {
trace("David is David");
}
下例说明在按值进行比较时,等于运算符执行自动类型转换。字符串值转换为数字:
var a:Number = 5;
var b:String = "5";
trace(a == b); // true
布尔值转换为数字,而
true
转换为 1,
false
转换为 0:
var c:Number = 1;
var d:Boolean = true;
trace(c == d); // true
var e:Number = 0;
var f:Boolean = false;
trace(e == f); // true
但是,字符串值不会转换为布尔值,因此下面的语句返回
false
:
var g:String = "true";
var h:Boolean = true;
trace(g == h); // false
下面的示例说明按引用进行比较。第一个示例比较两个具有相同长度和元素的数组。对于这两个数组,等于运算符将返回
false
。虽然数组
firstArray
和
secondArray
看起来相等,但是按引用进行比较要求它们都引用同一个数组。第二个示例创建
thirdArray
变量,该变量与变量
firstArray
指向同一个数组。对于这两个数组,等于运算符将返回 true,因为这两个变量引用同一个数组。
var firstArray:Array = new Array("one", "two", "three");
var secondArray:Array = new Array("one", "two", "three");
trace(firstArray == secondArray); // false
/* Arrays are only considered equal
if the variables refer to the same array. */
var thirdArray:Array = firstArray;
trace(firstArray == thirdArray); // true
另请参见
用法 | expression1 > expression2 |
比较两个表达式,并确定 expression1
是否大于 expression2
;如果是,则结果为 true
。如果 expression1
小于等于 expression2
,则此运算符返回 false
。
如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。
操作数 | expression1:Object —
一个字符串、整数或浮点数。
|
| expression2:Object —
一个字符串、整数或浮点数。
|
结果 | Boolean — 如果 expression1 大于 expression2 ,则值为 true ,否则为 false 。 |
示例 如何使用示例 下例说明按字母顺序对字符串进行比较,大写字符排在小写字母的前面:
var a:String = "first";
var b:String = "First";
trace(a > b); // true
下例说明如何将类型为 String 和 Boolean 的值转换为数字:
var c:Number = 5;
var d:String = "4";
trace(c > d); // true
var e: Number = 2;
var f:Boolean = true;
trace(e > f); // true
用法 | expression1 >= expression2 |
比较两个表达式,确定 expression1
是大于或等于 expression2
(true
) 还是 expression1
小于 expression2
(false
)。
操作数 | expression1:Object —
一个字符串、整数或浮点数。
|
| expression2:Object —
一个字符串、整数或浮点数。
|
结果 | Boolean — 如果 expression1 大于等于 expression2 ,则值为 true ,否则为 false 。 |
示例 如何使用示例 在下面的示例中,大于或等于运算符 (>=) 用于确定当前小时是否大于或等于 12:
if (new Date().getHours() >= 12) {
trace("good afternoon");
} else {
trace("good morning");
}
另请参见
用法 | expression1 in expression2 |
计算属性是否为特定对象的一部分。若要使用 in
运算符,请将属性名指定为第一个操作数,并将对象指定为第二个操作数。如果指定的对象包含这样的属性,则结果为 true
,否则结果为 false
。
如果指定的对象是 Array 对象,则可以使用 in
运算符来检查特定的索引编号是否有效。如果向第一个操作数传递整数,那么,当索引位于有效的索引编号范围内时,结果为 true
,否则为 false
。
结果 | Boolean — 如果 expression1 是由 expression2 表示的对象的属性,则值为 true ,否则为 false 。 |
示例 如何使用示例
下例使用
in
运算符来说明
PI
是 Math 对象的属性,而
myProperty
却不是。
trace("PI" in Math); // true
trace("myProperty" in Math); // false
下例使用 in
运算符来说明数字 0、1 和 2 是 myArray
对象中的有效索引编号,而数字 3 却不是。
public var myArray:Array = ["zero", "one", "two"];
trace(0 in myArray); // true
trace(1 in myArray); // true
trace(2 in myArray); // true
trace(3 in myArray); // false
另请参见
用法 | ++expression expression++ |
将表达式加 1。该表达式可以是变量、数组中的元素或对象的属性。运算符的预先递增格式 (++expression
) 将
expression
加 1,然后返回结果。此运算符的滞后递增格式 (expression++
) 将 expression
加 1,然后返回 expression
的初始值(加 1 之前的值)。
操作数 | expression:Number —
一个数字或计算结果为数字的变量。
|
结果示例 如何使用示例
下例将 ++ 用作
while
循环中的预先递增运算符,并说明添加到数组中的值是已经递增的值:
var preInc:Array = new Array();
var i:int = 0;
while (i < 10) {
preInc.push(++i);
}
trace(preInc); // 1,2,3,4,5,6,7,8,9,10
下例将 ++ 用作
while
循环中的滞后递增运算符,并说明添加到数组中的值是初始值:
var postInc:Array = new Array();
var i:int = 0;
while (i < 10) {
postInc.push(i++);
}
trace(postInc); // 0,1,2,3,4,5,6,7,8,9
下面的示例将 ++ 用作滞后递增运算符,以使
while
循环运行五次:
var i:int = 0;
while (i++ < 5) {
trace("this is execution " + i);
}
/* output:
this is execution 1
this is execution 2
this is execution 3
this is execution 4
this is execution 5
*/
另请参见
用法 | expression1 != expression2 |
测试结果是否与等于运算符 (==
) 正好相反。如果 expression1
等于 expression2
,则结果为 false
。与等于运算符 (==
) 一样,相等的定义取决于所比较的数据类型。
如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:
- 如果 int、uint 和 Boolean 类型具有相同的值,则将其值视为相等。
- 具有相匹配的值的两个数字被视为相等,除非两个值都为
NaN
。
- 如果两个操作数的值都为
null
或 undefined
,则将它们视为相等。
- 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
- 对于 XML 对象:
- 如果一个操作数是文本或属性节点,而另一个操作数具有简单的内容,则使用
toString()
方法可将两个操作数转换为字符串,如果生成的字符串相匹配,则将这两个操作数视为相等。
- 否则,仅当两个对象的限定名、特性和子属性都匹配时,才会被视为相等。
- 如果 XMLList 对象具有相同数目的属性,并且属性的顺序和值都匹配,则可将其视为相等。
- 对于 Namespace 对象,如果两个对象的
uri
属性相匹配,则其值被视为相等。
- 对于 QName 对象,如果两个对象的
uri
属性相匹配,并且两个对象的 localName
属性也相匹配,则其值被视为相等。
- 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
如果这两个操作数的数据类型不匹配,则不等于运算符 (
!=
) 返回
true
,但在以下情况下除外:
- 操作数的值为
undefined
和 null
,在这种情况下,结果为 true
。
- 自动数据类型转换将数据类型为 String、Boolean、int、uint 和 Number 的值转换为兼容的类型,并且转换后的值相等,在这种情况下,操作数被视为相等。
- 一个操作数的类型为 XML,并且包含简单内容 (
hasSimpleContent() == true
),在用 toString()
方法将这两个操作数都转换为字符串之后,所生成的字符串相匹配。
- 一个操作数的类型为 XMLList,并且满足以下任一条件:
- XMLList 对象的
length
属性为 0,另一个对象为 undefined
。
- XMLList 对象的
length
属性为 1,XMLList 对象的一个元素与另一个操作数相匹配。
操作数 | expression1:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
| expression2:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
结果 | Boolean — 如果表达式不相等,则值为 true ,否则为 false 。 |
示例 如何使用示例 下面的示例说明不等于运算符 (
!=
) 的结果:
trace(5 != 8); // true
trace(5 != 5); // false
下面的示例说明在
if
语句中使用不等于运算符 (
!=
):
var a:String = "David";
var b:String = "Fool";
if (a != b) {
trace("David is not a fool");
}
下面的示例说明按引用比较两个函数:
var a:Function = function() { trace("foo"); };
var b:Function = function() { trace("foo"); };
a(); // foo
b(); // foo
trace(a != b); // true
a = b;
a(); // foo
b(); // foo
trace(a != b); // false
下面的示例说明按引用比较两个数组:
var a:Array = [ 1, 2, 3 ];
var b:Array = [ 1, 2, 3 ];
trace(a); // 1,2,3
trace(b); // 1,2,3
trace(a != b); // true
a = b;
trace(a); // 1,2,3
trace(b); // 1,2,3
trace(a != b); // false
另请参见
用法 | expression instanceof function |
计算表达式的原型链是否包括 function
的原型对象。之所以包括 instanceof
运算符,是为了与 ECMAScript 3.0 版保持向后兼容,它对于选择用带构造函数的基于原型的继承来代替类继承的高级程序员可能非常有用。
若要检查对象是否为特定数据类型的成员,请使用 is
运算符。
当与类一起使用时,instanceof
运算符类似于 is
运算符,因为类的原型链包括其所有超类。但是,原型链上不包括接口,因此当与接口一起使用时,instanceof
运算符的结果始终为 false
,而 is
运算符的结果为 true
(如果对象属于实现指定接口的类)。
注意:ActionScript is
运算符与 Java 中的 instanceof
运算符等效。
操作数 | expression:Object —
要对其进行计算的包含原型链的对象。
|
| function:Object —
一个函数对象(或类)。
|
结果 | Boolean — 如果 expression 的原型链包括 function 的原型对象,则返回 true ,否则返回 false 。 |
示例 如何使用示例
下例创建名为
mySprite
的 Sprite 类的一个实例,并使用
instanceof
运算符来测试
mySprite
的原型链是否包括 Sprite 和 DisplayObject 类的原型对象。对于 Sprite 类和 DisplayObject 类来说,结果为
true
,因为 Sprite 和 DisplayObject 的原型对象位于
mySprite
的原型链上。
var mySprite:Sprite = new Sprite();
trace(mySprite instanceof Sprite); // true
trace(mySprite instanceof DisplayObject); // true
下例使用 IBitmapDrawable 接口说明
instanceof
运算符不能与接口一起使用。由于 DisplayObject 是实现 IBitmapDrawable 接口的 Sprite 类的超类,因此
is
运算符的结果为
true
。
var mySprite:Sprite = new Sprite();
trace(mySprite instanceof IBitmapDrawable); // false
trace(mySprite is IBitmapDrawable); // true
另请参见
用法 | expression1 is expression2 |
计算对象是否与特定数据类型、类或接口兼容。使用 is
运算符(而非 instanceof
运算符)进行类型比较。还可以使用 is
运算符来检查对象是否实现某个接口。
结果 | Boolean — 如果 expression1 与在 expression2 中指定的数据类型、类或接口兼容,则为 true ,否则为 false 。 |
示例 如何使用示例
下例创建名为
mySprite
的 Sprite 类的一个实例,并使用
is
运算符来测试
mySprite
是否为 Sprite 和 DisplayObject 类的实例,以及它是否实现 IEventDispatcher 接口。
import flash.display.*;
import flash.events.IEventDispatcher;
var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite); // true
trace(mySprite is DisplayObject); // true
trace(mySprite is IEventDispatcher); // true
另请参见
用法 | expression1 < expression2 |
比较两个表达式,并确定 expression1
是否小于 expression2
;如果是,则结果为 true
。如果 expression1
大于等于 expression2
,则结果为 false
。
如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。
操作数 | 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
用法 | expression1 <= expression2 |
比较两个表达式,并确定 expression1
是否小于等于 expression2
;如果是,则结果为 true
。如果 expression1
大于 expression2
,则结果为 false
。
如果两个操作数的类型都为 String,则使用字母顺序比较操作数;所有大写字母都排在小写字母的前面。否则,首先将操作数转换为数字,然后进行比较。
操作数 | 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
用法指示脚本注释的开始。出现在注释分隔符 (//
) 和行结束字符之间的字符被解释为注释并被忽略。此分隔符用于单行注释;对于多个连续行的注释,请使用 /*
和 */
分隔符。
操作数示例 如何使用示例 下例说明单行注释:
// Any text following a line comment delimiter is ignored during compilation
另请参见
用法 | expression1 && expression2 |
如果 expression1
为 false
或可以转换为 false
,则返回该表达式;否则,返回 expression2
。可以转换为 false
的值的示例有 0、NaN
、null
和 undefined
。如果将函数调用用作 expression2
,那么,当 expression1
的计算结果为 false
时,将不调用该函数。
如果这两个操作数的类型均为 Boolean,那么,只有当这两个操作数均为 true
时,结果才为 true
,如下表中所示:
表达式 |
计算结果 |
true && true |
true |
true && false |
false |
false && false |
false |
false && true |
false |
操作数 | 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 {
trace("Try Again!");
}
另请参见
用法对变量或表达式的布尔值取反。如果 expression
是具有绝对值或经过转换的值的 true
变量,则 !expression
的值为 false
。如果表达式 x && y
的计算结果为 false
,则表达式 !(x && y)
的计算结果为 true
。
下面的表达式说明了使用逻辑 NOT (!) 运算符的结果:
!true
返回 false
。
!false
返回 true
。
操作数 | expression: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
。
另请参见
用法 | expression1 || expression2 |
如果 expression1
为 true
或可以转换为 true
,则返回该表达式;否则,返回 expression2
。如果将函数调用用作 expression2
,那么,当 expression1
的计算结果为 true
时,将不调用该函数。
如果这两个操作数的类型均为 Boolean,那么,当这两个表达式或其中一个表达式为 true
时,结果为 true
;只有当这两个表达式均为 false
时,结果才为 false
,如下表中所示:
表达式 |
计算结果 |
true || true |
true |
true || false |
true |
false || false |
false |
false || true |
true |
操作数 | expression1:* —
任何类型的值。
|
| expression2:* —
任何类型的值。
|
结果 | * — 如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。 |
示例 如何使用示例 下面的示例在
if
语句中使用逻辑 OR 运算符 (
||
)。第二个表达式的计算结果为
true
,因此最终结果为
true
:
var a:Number = 10;
var b:Number = 250;
var start:Boolean = false;
if ((a > 25) || (b > 200) || (start)) {
trace("the logical OR test passed"); // the logical OR test passed
}
因为
if
语句中的条件之一为 true (
b > 200
),所以将出现撀呒?OR 测试通过”消息。
下例说明如何将函数调用作为第二个操作数会怎样导致意外的结果。如果运算符左侧的表达式的计算结果为 true
,则返回该结果,而不计算右侧的表达式(不调用函数 fx2()
)。
function fx1():Boolean {
trace("fx1 called");
return true;
}
function fx2():Boolean {
trace("fx2 called");
return true;
}
if (fx1() || fx2()) {
trace("IF statement entered");
}
另请参见
用法 | expression1 % expression2 |
计算 expression1
除以 expression2
的余数。如果有任一操作数不是数字值,则模运算符 (%
) 会尝试将它转换为数字。
模运算结果的符号与被除数(第一个数字)的符号相匹配。例如,-4 % 3
和 -4 % -3
的计算结果都为 -1
。
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。只包含数字字符的字符串的计算结果为一个数字。
|
| expression2: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,因为在二进制计算中对浮点数精度有限制。
另请参见
用法 | expression1 %= expression2 |
将 expression1 % expression2
的值赋给 expression1
。下面的两个语句是等效的:
x %= y;
x = x % y;
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果示例 如何使用示例 下面的示例将值 4 赋予变量
a
:
var a:Number = 14;
var b:Number = 5;
a %= b;
trace(a); // 4
另请参见
用法 | expression1 * expression2 |
将两个数值表达式相乘。如果两个表达式都是整数,则积为整数。如果其中任何一个或两个表达式是浮点数,则积为浮点数。
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果示例 如何使用示例 下面的语句将整数 2 与 3 相乘,结果为整数 6:
下面的语句将浮点数 2.0 与 3.1416 相乘,结果为浮点数 6.2832:
trace(2.0 * 3.1416); // 6.2832
另请参见
用法 | expression1 *= expression2 |
将 expression1 * expression2
的值赋给 expression1
。例如,以下两个表达式是等效的:
x *= y
x = x * y
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果 | Number — expression1 * expression2 的值。如果表达式不能转换为数值,则返回 NaN (非数字)。 |
示例 如何使用示例 下面的示例将值 50 赋予变量
a
:
var a:Number = 5;
var b:Number = 10;
trace(a *= b); // 50
下面示例的第二行和第三行计算等号右侧的表达式,然后将结果赋予
c
和
d
:
var i:Number = 5;
var c:Number = 4 - 6;
var d:Number = i + 2;
trace(c *= d); // -14
另请参见
用法 | namespace::property
namespace::method()
namespace::xmlObject.property
namespace::xmlObject.@attribute |
标识属性、方法或 XML 属性或特性的命名空间。
操作数 | namespace:Object —
用来进行标识的命名空间。
|
| propertyName:Object —
要标识的属性、方法、XML 属性或 XML 特性。
|
示例 如何使用示例 下例使用
::
运算符来标识两个不同命名空间中的两种同名方法:
public class NamespaceExample extends Sprite {
public namespace French;
public namespace Hawaiian;
public function NamespaceExample() {
trace(Hawaiian::hello()); // aloha
trace(French::hello()); // bonjour
}
Hawaiian function hello():String {
return "aloha";
}
French function hello():String {
return "bonjour";
}
}
下例使用
::
运算符来标识具有指定命名空间的 XML 属性:
var soap:Namespace = new Namespace("http://schemas.xmlsoap.org/wsdl/soap/");
var w:Namespace = new Namespace("http://weather.example.org/forecast");
var myXML:XML =
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<soap:Body>
<w:forecast xmlns:w="http://weather.example.org/forecast">
<w:city>Quito</w:city>
<w:country>Ecuador</w:country>
<date>2006-01-14</date>
</w:forecast>
</soap:Body>
</soap:Envelope>;
trace(myXML.soap::Body.w::forecast.w::city); // Quito
另请参见
用法 | new constructor(parameters) |
对类实例进行实例化。new
运算符可以与类型为 Class 的变量一起用来创建类的实例。new
运算符通常与 class 对象一起用来创建类的实例。例如,语句 new Sprite()
创建 Sprite 类的实例。
new
运算符还可用来将类与嵌入的资源(这是编译为 SWF 文件的外部对象,如图像、声音或字体)。每个嵌入资源都由一个唯一的嵌入资源类表示。若要访问嵌入资源,必须使用 new
运算符来实例化与其关联的类。因此,可以调用嵌入资源类的相应方法和属性来处理嵌入资源。
如果您喜欢用 Function 对象(而非 class
关键字)来定义类,则可以使用 new
运算符来基于构造函数创建对象。请勿将类的构造函数与构造函数方法混淆。构造函数是用 function
关键字定义的 Function 对象,但它不属于类定义。如果您使用构造函数来创建对象,则必须使用原型继承来代替类继承。
操作数 | 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]
下例使用
new
运算符来创建具有 18 个元素的 Array 类的实例:
var golfCourse:Array = new Array(18);
另请参见
用法 | object = {name1 : value1, name2 : value2,... nameN : valueN} |
创建一个新对象,并用指定的 name
和 value
属性对初始化该对象。使用此运算符的效果与使用 new Object
语法并用赋值运算符填充属性对的效果相同。新建对象的原型通常命名为 Object 对象。
此运算符也用于标记与流控制语句(for
、while
、if
、else
、switch
)和函数相关联的连续代码块。
操作数结果示例 如何使用示例 下面代码的第一行用对象初始值设定项 ({}) 运算符创建一个空对象;第二行用构造函数创建一个新对象。
var object:Object = {};
var object:Object = new Object();
下面的示例创建一个对象
account
,并用附带的值初始化属性
name
、
address
、
city
、
state
、
zip
和
balance
:
var account:Object = {name:"Adobe Systems, Inc.", address:"601 Townsend Street", city:"San Francisco", state:"California", zip:"94103", balance:"1000"};
for (i in account) {
trace("account."+i+" = "+account[i]);
}
下面的示例说明数组和对象初始值设定项可以如何相互嵌套:
var person:Object = {name:"Gina Vechio", children:["Ruby", "Chickie", "Puppa"]};
下面的代码使用上述示例中的信息,并使用构造函数得到相同的结果:
var person:Object = new Object();
person.name = "Gina Vechio";
person.children = new Array();
person.children[0] = "Ruby";
person.children[1] = "Chickie";
person.children[2] = "Puppa";
另请参见
用法 | (expression1[, expression2]) (expression1, expression2) function(parameter1,..., parameterN) |
对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括号前面的函数。
用法 1:控制运算符的执行顺序。括号覆盖正常的优先级顺序,从而导致先计算括号内的表达式。如果括号是嵌套的,则先计算最里面括号中的内容,然后计算较靠外括号中的内容。
用法 2:按顺序计算用逗号分隔的一系列表达式,并返回最终表达式的结果。
用法 3:括住一个或多个参数并将它们传递给括号前面的函数。
操作数 | expression1:Object —
一个表达式,可以包括数字、字符串、变量或文本。
|
| expression2:Object —
一个表达式,可以包括数字、字符串、变量或文本。
|
| function:Function —
要对括号中的内容执行的函数。
|
| parameter1...parameterN:Object —
一系列参数,在将结果作为参数传递给括号外的函数之前执行这些参数。
|
示例 如何使用示例 用法 1:下列语句说明如何使用括号来控制表达式的执行顺序:
trace((2 + 3) * (4 + 5)); // 45
trace(2 + (3 * (4 + 5))); // 29
trace(2 + (3 * 4) + 5); // 19
trace(2 + (3 * 4) + 5); // 19
用法 2:下例计算函数
foo()
,再计算函数
bar()
,然后返回表达式
a + b
的结果:
var a:Number = 1;
var b:Number = 2;
function foo() {
a += b;
}
function bar() {
b *= 10;
}
trace((foo(), bar(), a + b)); // 23
用法 3:下面的示例说明将括号与函数结合使用的方法:
var today:Date = new Date();
trace(today.getFullYear()); // outputs current year
function traceParameter(param):void {
trace(param);
}
traceParameter(2 * 2); // 4
另请参见
用法计算 ECMAScript for XML (E4X) XML 构造中的表达式。例如,myXML.(lastName == "Smith")
标识名为 lastName
且值为 "Smith"
的 XML 元素。结果为 XMLList 对象。
操作数 | myXML:* —
一个 XML 或 XMLList 对象。
|
| expression:* —
用来定义匹配元素的表达式。
|
结果示例 如何使用示例 下例说明如何使用括号来标识元素和属性:
var myXML:XML =
<employees>
<employee id = "42">
<firstName>Joe</firstName>
<lastName>Smith</lastName>
</employee>
<employee id = "43">
<firstName>Susan</firstName>
<lastName>Jones</lastName>
</employee>
<employee id = "44">
<firstName>Anne</firstName>
<lastName>Smith</lastName>
</employee>
</employees>;
trace(myXML.employee.(lastName == "Smith").@id.toXMLString());
// 42
// 44
trace(myXML.employee.(Number(@id) > 42).@id.toXMLString());
// 43
// 44
另请参见
用法如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (RegExp),而不是一个变量、字符串或其它 ActionScript 元素。但是,请注意,两个连续的正斜杠字符 (//
) 表示注释开始。
操作数 | pattern:String —
一个或一系列用来定义正则表达式模式的字符。
|
| flags:String —
零个或一系列如下字符:g (表示 global 标志)、i (表示 ignoreCase 标志)、s (表示 dotall 标志)、x (表示 extended 标志)。
|
示例 如何使用示例 下例使用正斜杠字符 (/) 设置类型为 RegExp 的变量的值(为了在匹配时忽略大小写,设置了
i
标志)。
var myRegExp:RegExp = /foo-\d+/i;
trace(myRegExp.exec("ABC Foo-32 def.")); // Foo-32
另请参见
用法 | expression1 === expression2 |
测试两个表达式是否相等,但不执行自动数据转换。如果两个表达式(包括它们的数据类型)相等,则结果为 true
。
全等运算符 (===
) 与等于运算符 (==
) 在以下三个方面相同:
- 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
- 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
- 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
全等运算符 (
===
) 与等于运算符 (
==
) 仅在以下两个方面不同:
- 全等运算符仅针对数字类型(Number、int 和 uint)执行自动数据转换,而等于运算符 () 针对所有的原始数据类型执行自动数据转换。
- 在对
null
和 undefined
进行比较时,全等运算符返回 false
。
在涉及到原始值(例如,
var x:Number = 1
)和原始对象(例如,
var x:Number = new Number(1)
)这两种情况下,全等运算符在 ActionScript 3.0 中生成的结果与在 ActionScript 2.0 中生成的结果不同。这是由于 ActionScript 3.0 不再区分原始值和原始包装对象。
首先,在 ActionScript 3.0 中,在对包含相同值的原始值和原始对象进行比较时将返回 true
,但是在早期版本中则返回 false
。在早期版本中,原始值的数据类型是 Boolean、Number 或 String,而原始对象的数据类型总是 Object,而不是 Boolean、Number 或 String。这种区别的实际效果是,在早期版本的 ActionScript 中,下面的代码生成 false
(因为操作数的数据类型不匹配),但是在 ActionScript 3.0 中,结果为 true
(因为原始值的类型为 Boolean、Number、int、uint 或 String,而与它们是否包装在对象中无关)。
var num1:Number = 1;
var num2:Number = new Number(1);
trace(num1 === num2); // true in ActionScript 3.0, false in ActionScript 2.0
第二,在对两个包含相同值的原始对象进行比较时,在 ActionScript 3.0 中将生成
true
,但在早期版本中将生成
false
。
var num1:Number = new Number(1);
var num2:Number = new Number(1);
trace(num1 == num2); // true in ActionScript 3.0, false in ActionScript 2.0
trace(num1 === num2); // true in ActionScript 3.0, false in ActionScript 2.0
原因在于,在早期版本的 ActionScript 中,这两个变量的数据类型均为 Object,因此将对它们按引用进行比较,而且等于运算和全等运算的结果均为
false
。但是,在 ActionScript 3.0 中,这两个变量的数据类型均为 Number,因此将按值对它们进行比较,等于运算和全等运算的结果均为
true
。
操作数 | expression1:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
| expression2:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
结果示例 如何使用示例 下例说明当值和数据类型都匹配时,全等运算符 (
===
) 与等于运算符 (
==
) 相同:
var string1:String = "5";
var string2:String = "5";
trace(string1 == string2); // true
trace(string1 === string2); // true
下例说明全等运算符不将 String 类型的数据转换为 Number 类型的数据,但是等于运算符 (
==
) 却进行这样的转换:
// The equality (==) operator converts 5 to "5", but the strict equality operator does not
var string1:String = "5";
var num:Number = 5;
trace(string1 == num); // true
trace(string1 === num); // false
下例说明全等运算符不将布尔值转换为数字,但是等于运算符却进行这样的转换:
var num:Number = 1;
var bool:Boolean = true;
trace(num == bool); // true
trace(num === bool); // false
下例说明全等运算符确实转换 int 和 uint 数据类型:
var num1:Number = 1;
var num2:int = 1;
var num3:uint = 1;
trace(num1 === num2); // true
trace(num1 === num3); // true
下例说明全等运算符将
null
和
undefined
视为不相等,但是等于运算符却将它们视为相等:
trace(null == undefined); // true
trace(null === undefined); // false
另请参见
用法 | expression1 !== expression2 |
测试结果与全等运算符 (===
) 正好相反。除了仅转换 int 和 uint 数据类型外,不全等运算符执行的运算与不等于运算符相同。
如果 expression1
等于 expression2
,并且它们的数据类型相等,则结果为 false
。
不全等运算符 (!==
) 与不等于运算符 (!=
) 在以下三个方面相同:
- 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
- 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
- 表示对象、数组和函数的变量按引用进行比较。如果两个变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
不全等运算符与不等于运算符 (
!=
) 仅在以下两个方面不同:
- 不全等运算符 (
!==
) 仅针对数字类型(Number、int 和 uint)执行自动数据转换,而不等于运算符 (!=
) 针对所有的原始数据类型执行自动数据转换。
- 在对
null
和 undefined
进行比较时,不全等运算符 (!==
) 返回 true
。
操作数 | expression1:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
| expression2:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
结果示例 如何使用示例 下面代码中的注释说明使用等于运算符 (
==
)、全等运算符 (
===
) 和不全等运算符 (
!==
) 的运算的返回值:
var s1:String = "5";
var s2:String = "5";
var s3:String = "Hello";
var n:Number = 5;
var b:Boolean = true;
trace(s1 == s2); // true
trace(s1 == s3); // false
trace(s1 == n); // true
trace(s1 == b); // false
trace(s1 === s2); // true
trace(s1 === s3); // false
trace(s1 === n); // false
trace(s1 === b); // false
trace(s1 !== s2); // false
trace(s1 !== s3); // true
trace(s1 !== n); // true
trace(s1 !== b); // true
另请参见
用法如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其它 ActionScript 元素。
操作数示例 如何使用示例 下面的示例使用引号 (") 指示变量
yourGuess
的值是文本字符串
"Prince Edward Island"
,而不是变量名。
var yourGuess:String = "Prince Edward Island";
submit_btn.onRelease = function() { trace(yourGuess); };
// Prince Edward Island
另请参见
用法 | -expression expression1 - expression2 |
用于执行求反或减法运算。
用法 1:用于执行求反时,该运算符将数值表达式的符号反转。
用法 2:用于减法时,该运算符对两个数值表达式执行算术减法运算,从 expression1
中减去 expression2
。两个表达式都为整数时,差为整数。其中任何一个或两个表达式为浮点数时,差为浮点数。
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果示例 如何使用示例 用法 1:下面的语句将表达式 2 + 3 的符号反转:
用法 2:下面的语句从整数 5 中减去整数 2:
结果 3 是整数。
下面的语句从浮点数 3.25 中减去浮点数 1.5:
trace(3.25 - 1.5); // 1.75
结果为浮点数 1.75。
另请参见
用法 | expression1 -= expression2 |
将 expression1 - expression2
的值赋给 expression1
。例如,下面两个语句是等效的:
x -= y ;
x = x - y;
必须将字符串表达式转换为数字;否则,结果为 NaN
(非数字)。
操作数 | expression1:Number —
一个数字或计算结果为数字的表达式。
|
| expression2:Number —
一个数字或计算结果为数字的表达式。
|
结果示例 如何使用示例 下例使用减法赋值运算符 (
-=
) 从 5 中减去 10,然后将结果赋予变量
x
:
var x:Number = 5;
var y:Number = 10;
x -= y;
trace(x); // -5
以下示例显示如何将字符串转换为数字:
var x:String = "5";
var y:String = "10";
x -= y;
trace(x); // -5
另请参见
用法 | [modifiers] var variableName:type function functionName():type { ...} function functionName(parameter1:type, ..., parameterN:type) [:type]{ ... } |
用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。在变量声明或赋值中使用时,此运算符指定变量的类型;在函数声明或定义中使用时,此运算符指定函数的返回类型;在函数定义中与函数参数一起使用时,此运算符指定该参数预期的变量类型。
类型检查总是发生在运行时。但是,当编译器设置为严格模式时,所有类型都在编译时检查,并在出现不匹配的情况时生成错误。在使用点运算符 (.
) 进行赋值运算、函数调用和类成员解除引用的过程中,可能出现不匹配情况。
您可以使用的类型包括所有本机对象类型,您定义的类和接口以及 void
。可识别的本机类型有 Boolean、Number、int、uint 和 String。所有内置类都被视为本机类型,因此也受支持。
如果未指定数据类型,则变量、函数返回值或函数参数将被视为无类型,这意味着值可以属于任何数据类型。如果希望解释您打算使用无类型值,则可以将星号 (*) 字符用作类型注释。当用作类型注释时,星号字符等同于将变量、函数返回类型或函数参数保留为无类型。
操作数 | variableName:* —
变量的标识符。
|
| type:* —
本机数据类型、您已定义的类名称或者接口名称。
|
| functionName:Function —
函数的标识符。
|
| parameter:* —
函数参数的标识符。
|
示例 如何使用示例 用法 1:下面的示例声明一个类型为 String 且名为
userName
的公共变量,并且为该变量分配一个空字符串:
var userName:String = "";
用法 2:下例说明如何通过定义名为
randomInt()
的函数来指定某函数的返回类型(将该函数的返回类型指定为 int):
function randomInt(integer:int):int {
return Math.round(Math.random()*integer);
}
trace(randomInt(8));
用法 3:下面的示例定义一个名为
squareRoot()
的函数,该函数采用名为
val
且类型为 Number 的参数,返回
val
的平方根(也为 Number 类型):
function squareRoot(val:Number):Number {
return Math.sqrt(val);
}
trace(squareRoot(121));
另请参见
用法计算 expression
并返回一个指定表达式的数据类型的字符串。结果限制在六个可能的字符串值:boolean
、function
、number
、object
、string
和 xml
。如果向用户定义的类应用此运算符,则结果为字符串 object
。之所以包括 typeof
运算符是为了向后兼容。使用 is
运算符可以检查类型是否兼容。
操作数结果 | String — 类型为 expression 的字符串表示形式。下表说明对各个类型的表达式使用 typeof 运算符的结果。
表达式类型 |
结果 |
数组
|
object
|
Boolean
|
boolean
|
Function
|
function
|
int
|
number
|
Number
|
number
|
object
|
object
|
String
|
string
|
uint
|
number
|
XML
|
xml
|
XMLList
|
xml
|
|
示例 如何使用示例
下例说明针对各个对象和值使用
typeof
时的结果。
trace(typeof Array); // object
trace(typeof Date); // object
trace(typeof 3); // number
下例说明在 ActionScript 3.0 中,无论您赋予字面值还是使用
new
运算符来创建对象,原始对象的数据类型都相同。这与早期版本的 ActionScript 中不同,在早期版本中,
typeof
运算符对于变量
b
返回
object
:
var a:String = "sample";
var b:String = new String("sample");
trace(typeof a); // string
trace(typeof b); // string
另请参见
用法计算表达式,然后放弃其值,返回 undefined
。void
运算符通常用在一些比较中,这些比较使用 ==
运算符来测试未定义的值。
操作数结果 另请参见
用法 | myXML= <{tagName} {attributeName} = {attributeValue}>{content}</{tagName}> |
在 XML 文本中定义 XML 标签。使用正斜杠 / 可以定义结束标签。
操作数 | myXML:* —
一个 XML 或 XMLList 对象。
|
| tagName:* —
计算结果为 XML 标签名称的表达式。
|
| attributeName:* —
计算结果为 XML 属性名称的表达式。
|
| attributeValue:* —
计算结果为 XML 属性值的表达式。
|
| content:* —
计算结果为 XML 标签内容的表达式。
|
示例 如何使用示例 下例说明如何使用
<
和
>
运算符来定义 XML 文本:
var x:XML = <item id= "324">cola</item>;
另请参见
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Sun Dec 14 2008, 10:50 PM -08:00