符号运算符是指定如何组合、比较或修改表达式值的字符。
XML | |||
---|---|---|---|
@ | attribute identifier | ||
{ } | braces (XML) | ||
[ ] | brackets (XML) | ||
+ | concatenation (XMLList) | ||
+= | concatenation assignment (XMLList) | expression1 赋予 expression1 + expression2 的值。 | |
delete (XML) | reference 指定的 XML 元素或属性。 | ||
.. | descendant accessor | ||
。 | dot (XML) | ||
( ) | parentheses (XML) | ||
< > | XML literal tag delimiter | ||
其他 | |||
[] | array access | a0 等)初始化一个新数组或多维数组,或者访问数组中的元素。 | |
as | |||
, | comma | expression1 ,然后计算 expression2 ,依此类推。 | |
?: | conditional | expression1 ,如果 expression1 的值为 true ,则结果为 expression2 的值;否则结果为 expression3 的值。 | |
delete | reference 指定的对象属性;如果在运算完成后该属性不存在,则结果为 true ,否则结果为 false 。 | ||
。 | dot | ||
in | |||
instanceof | function 的原型对象。 | ||
is | |||
:: | name qualifier | ||
new | |||
{} | object initializer | name 和 value 属性对初始化该对象。 | |
() | parentheses | ||
/ | RegExp delimiter | ||
: | type | ||
typeof | expression 并返回一个指定表达式的数据类型的字符串。 | ||
void | undefined 。 | ||
字符串 | |||
+ | concatenation | ||
+= | concatenation assignment | expression1 赋予 expression1 + expression2 的值。 | |
" | string delimiter | ||
按位 | |||
& | bitwise AND | expression1 和 expression2 转换为 32 位无符号整数,并对整数参数的每一位执行 Boolean AND 运算。 | |
<< | bitwise left shift | expression1 和 shiftCount 转换为 32 位整数,并将 expression1 中的所有位向左移动由 shiftCount 转换所得到的整数指定的位数。 | |
~ | bitwise NOT | expression 转换为一个 32 位带符号整数,然后按位对 1 求补。 | |
| | bitwise OR | expression1 和 expression2 转换为 32 位无符号整数,并在 expression1 或 expression2 的对应位为 1 的每个位的位置放置一个 1。 | |
>> | bitwise right shift | expression 和 shiftCount 转换为 32 位整数,并将 expression 中的所有位向右移动由 shiftCount 转换所得到的整数指定的位数。 | |
>>> | bitwise unsigned right shift | >> ) 运算符基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。 | |
^ | bitwise XOR | expression1 和 expression2 转换为 32 位无符号整数,并在 expression1 或 expression2 中为 1(但不是在两者中均为 1)的对应位的每个位的位置返回 1。 | |
按位组合赋值 | |||
&= | bitwise AND assignment | expression1 赋予 expression1 & expression2 的值。 | |
<<= | bitwise left shift and assignment | <<= ) 运算,并将内容作为结果存储在 expression1 中。 | |
|= | bitwise OR assignment | expression1 赋予 expression1 | expression2 的值。 | |
>>= | bitwise right shift and assignment | expression 中。 | |
>>>= | bitwise unsigned right shift and assignment | expression 中。 | |
^= | bitwise XOR assignment | expression1 赋予 expression1 ^ expression2 的值。 | |
比较 | |||
== | equality | ||
> | greater than | expression1 是否大于 expression2 ;如果是,则结果为 true 。 | |
>= | greater than or equal to | expression1 是大于等于 expression2 (值为 true )还是 expression1 小于 expression2 (值为 false )。 | |
!= | inequality | == ) 运算符正好相反。 | |
< | less than | expression1 是否小于 expression2 ;如果是,则结果为 true 。 | |
<= | less than or equal to | expression1 是否小于等于 expression2 ;如果是,则结果为 true 。 | |
=== | strict equality | ||
!== | strict inequality | === ) 运算符正好相反。 | |
注释 | |||
/*..*/ | block comment delimiter | ||
// | line comment delimiter | ||
算术 | |||
+ | addition | ||
-- | decrement | ||
/ | division | expression2 除以 expression1 。 | |
++ | increment | ||
% | modulo | expression1 除以 expression2 的余数。 | |
* | multiplication | ||
- | subtraction | ||
算术组合赋值 | |||
+= | addition assignment | expression1 赋予 expression1 + expression2 的值。 | |
/= | division assignment | expression1 赋予 expression1 / expression2 的值。 | |
%= | modulo assignment | expression1 赋予 expression1 % expression2 的值。 | |
*= | multiplication assignment | expression1 赋予 expression1 * expression2 的值。 | |
-= | subtraction assignment | expression1 赋予 expression1 - expression2 的值。 | |
赋值 | |||
= | assignment | expression2 (右侧的操作数)的值赋予 expression1 中的变量、数组元素或属性。 | |
逻辑 | |||
&& | logical AND | false 或可以转换为 false ,则返回 expression1 ,否则返回 expression2 。 | |
&&= | logical AND assignment | expression1 赋予 expression1 && expression2 的值。 | |
! | logical NOT | ||
|| | logical OR | expression1 为 true 或可转换为 true ,则返回该表达式,否则返回 expression2 。 | |
||= | logical OR assignment | expression1 赋予 expression1 || expression2 的值。 |
+ addition | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
加上数字表达式。两个表达式都为整数时,和为整数;其中一个或两个表达式为浮点数时,和为浮点数。
如果其中一个表达式为字符串,则所有其他表达式都被转换为字符串,然后连接起来,而不是进行求和。否则,如果表达式不是数字,Flash® Player 会将其转换为数字。
操作数expression1:Number —
要加上的值。
| |
expression2:Number —
要加上的值。
|
Number —
一个整数或浮点数。
|
示例
如何使用本示例
下面的语句将整数 2 和 3 相加:
trace(2 + 3); // 5
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);
trace()
语句将值 4751345.23 发送到撌涑觥泵姘濉若要更正这一点,请使用 Number()
函数将字符串转换为数字,如下所示:
var oldBalance:Number = 1345.23; var currentBalance:Number = Number(deposit_txt.text) + oldBalance; trace(currentBalance);
相关 API 元素
+= addition assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 + expression2
的值。例如,以下两个语句的结果是相同的:
x += y; x = x + y;addition (+) 运算符的所有规则适用于 addition assignment (
+=
) 运算符。
操作数expression1:Number —
一个数字。
| |
expression2:Number —
一个数字。
|
Number —
加法运算的结果。
|
示例
如何使用本示例
下例说明 addition assignment (
+=
) 运算符的数值用法:
var x:Number = 5; var y:Number = 10; x += y; trace(x); // 15
相关 API 元素
[] array access | 运算符 |
|
运行时版本: | Flash Player 9 |
用指定的元素(a0
等)初始化一个新数组或多维数组,或者访问数组中的元素。array access 运算符使您能够动态地设置和检索实例、变量和对象的名称。它还使您能够访问对象属性。
用法 1:数组是一个对象,其属性称为元素,这些元素由名为索引的数字逐一标识。创建数组时,需用 array access ([]) 运算符(即中括号)括住元素。一个数组可以包含各种类型的元素。例如,下面这个名为 employee
的数组包含三个元素;第一个元素是一个数字,另外两个元素是字符串(在引号内):
var employee:Array = [15, "Barbara", "Jay"];
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.*/
var my_array:Array = new Array(); my_array[0] = 15; my_array[1] = "Hello"; my_array[2] = true;
my_array[3] = "George";
trace()
语句查找第二个数组(索引 1)的第三个元素(索引 2)。
var ticTacToe:Array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; trace(ticTacToe[1][2]); // 6
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:数组中的一个值;本机类型或对象实例(包括 Array 实例)。 用法 3:对象的一个属性;本机类型或对象实例(包括 Array 实例)。 |
示例
如何使用本示例
下例说明创建新的空 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 */
相关 API 元素
as | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算第一个操作数指定的表达式是否为第二个操作数指定的数据类型的成员。如果第一个操作数是该数据类型的成员,则结果为第一个操作数。否则,结果为 null
值。
第二个操作数所用表达式的计算结果必须为数据类型。
操作数expression:* —
要针对指定的数据类型进行检查的值。
| |
datatype:Class —
用于计算 expression 操作数的数据类型。不能使用特殊的 * 类(即无类型)。
|
Object —
如果 expression 是 datatype 中指定的数据类型的成员,结果为 expression 。否则,结果为 null 值。
|
示例
如何使用本示例
以下示例创建了一个名为
myArray
的简单数组,并将 as
运算符用于各种数据类型。
public var myArray:Array = ["one", "two", "three"]; trace(myArray as Array); // one,two,three trace(myArray as Number); // null trace(myArray as int); // null
相关 API 元素
= assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 expression2
(右侧的操作数)的值赋予 expression1
中的变量、数组元素或属性。可以按值也可以按引用进行赋值。按值进行赋值将复制 expression2
的实际值并将其存储在 expression1
中。当 expression2
是原始值时(这意味着它的数据类型为 Boolean、Number、int、uint 或 String),使用按值进行赋值。按引用进行赋值将把对 expression2
的引用存储在 expression1
中。按引用进行赋值通常与 new
运算符一起使用。new
运算符将在内存中创建一个对象,并将对内存中该位置的引用分配给一个变量。
注意:在 ActionScript 3.0 中,所有值(包括原始值)都是对象,所有的赋值操作都通过引用来完成,但是原始对象具有一些特殊运算符,使其表现得就像按值赋值一样。
操作数expression1:* —
变量、数组元素或对象的属性。
| |
expression2:* —
任何类型的值。
|
Object —
赋予的值 expression2 。
|
示例
如何使用本示例
下面的示例使用按值进行赋值,将值 5 赋予变量
z
。
var z:Number = 5;
hello
”赋予变量 z
:
var x:String; x = "hello";
moonsOfJupiter
变量,该变量包含对新创建的 Array 对象的引用。然后使用按值进行赋值,将值“Callisto”复制到变量 moonsOfJupiter
所引用的数组的第一个元素:
var moonsOfJupiter:Array = new Array(); moonsOfJupiter[0] = "Callisto";
mercury
。然后使用按值进行赋值,将值 3030 赋予 mercury
对象的 diameter
属性:
var mercury:Object = new Object(); mercury.diameter = 3030; // in miles trace(mercury.diameter); // 3030
merkur
(mercury 在德语中的对应词)的变量,并将值 mercury
赋给它。这样,就创建了引用内存中同一对象的两个变量,也就是说您可以使用任一变量访问该对象的属性。然后可以更改 diameter
属性以使用千米而不是英里:
var merkur:Object = mercury; merkur.diameter = 4878; // in kilometers trace(mercury.diameter); // 4878
相关 API 元素
@ attribute identifier | 运算符 |
myXML.@attributeName |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
标识 XML 或 XMLList 对象的属性。例如,myXML。@id
标识 myXML
XML 对象的名为 id
的属性。还可使用下列语法访问属性:myXML.attribute("id")
、myXML["@id"]
和 myXML.@["id"]
。建议使用语法 myXML.@id
。要返回一个包含所有属性名称的 XMLList 对象,请使用 @*
。要返回名称与 ActionScript 保留字相匹配的属性,请使用 attribute()
方法代替 @
运算符。
attributeName:* —
属性的名称。
|
示例
如何使用本示例
第一个示例显示如何使用
@
(at 符号)运算符来标识元素的属性:
var myXML:XML = <item id = "42"> <catalogName>Presta tube</catalogName> <price>3.99</price> </item>; trace(myXML.@id); // 42
var xml:XML =<example id='123' color='blue'/> var xml2:XMLList = xml.@*; trace(xml2 is XMLList); // true trace(xml2.length()); // 2 for (var i:int = 0; i < xml2.length(); i++) { trace(typeof(xml2[i])); // xml trace(xml2[i].nodeKind()); // attribute trace(xml2[i].name()); // id and color }
xml.@class
(因为 class
是 ActionScript 中的保留字)。需要使用 xml.attribute("class")
语法:
var xml:XML = <example class='123'/> trace(xml.attribute("class"));
相关 API 元素
& bitwise AND | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 expression1
和 expression2
转换为 32 位无符号整数,并对整数参数的每一位执行 Boolean AND 运算。浮点数通过舍去小数点后面的所有位来转换为整数。结果是一个新的 32 位整数。
正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数expression1:Number —
一个数字或计算结果为数字的表达式。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下例通过比较数字的位表示形式来针对 13(二进制的 1101) 和 11(二进制的 1011)执行 bitwise AND 运算。所得到的整数由一系列位组成,只有当位于同一位置的操作数的位都是 1 时,所得到整数中的每一位才设置为 1。
var insert:Number = 13; var update:Number = 11; trace(insert & update); // 9 (or 1001 binary)
1101 & 1011 ---- 1001
下例说明返回值转换的行为:
trace(0xFFFFFFFF); // 4294967295 trace(0xFFFFFFFF & 0xFFFFFFFF); // -1 trace(0xFFFFFFFF & -1); // -1 trace(4294967295 & -1); // -1 trace(4294967295 & 4294967295); // -1
相关 API 元素
&= bitwise AND assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 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
相关 API 元素
<< bitwise left shift | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 expression1
和 shiftCount
转换为 32 位整数,并将 expression1
中的所有位向左移动由 shiftCount
转换所得到的整数指定的位数。因执行此运算而空出的位的位置将用 0 填充,移出左端的位将被舍去。将一个值向左侧移动一位与这个值乘以 2 等效。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
如果结果是负整数,那么,当您试图将结果赋予类型为 uint
的变量时,会出现运行时错误。尽管 ActionScript 没有“unsigned bitwise left shift”运算符,可以使用 uint(expression1 << shiftCount)
来获得同样的效果并避免出现运行时错误:
var num1:uint = 0xFF; var num2:uint = uint(num1 << 24); // uint() prevents runtime error
expression1:Number —
要向左移位的数字或表达式。
| |
shiftCount:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
int —
按位运算的结果。
|
示例
如何使用本示例
在下例中,整数 1 向左移 10 位:
x = 1 << 10
00000000001 binary << 10 decimal -------------- 10000000000 binary equals 1024 decimal
在下例中,整数 7 向左移 8 位:
x = 7 << 8
00000000111 binary << 8 decimal -------------- 11100000000 binary equals 1792 decimal
下面的 trace
语句说明已经将位向左移三位:
// 1 binary == 0001 // 8 binary == 1000 trace(1 << 3); // 8
相关 API 元素
<<= bitwise left shift and assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
执行 bitwise left shift (<<=
) 运算,并将内容作为结果存储在 expression1
中。下面的两个表达式是等效的:
A <<= B A = (A << B)操作数
expression1:Number —
要向左移位的数字或表达式。
| |
expression2:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
int —
按位运算的结果。
|
示例
如何使用本示例
在下例中,使用 bitwise left shift and assignment (<<=) 运算符将所有位向左移一位:
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
相关 API 元素
~ bitwise NOT | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 expression
转换为一个 32 位带符号整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。此运算符也称为对一求补运算符或按位求补运算符。
例如,十六进制值 0x7777 表示为二进制数:
0111011101110111
该十六进制值 ~0x7777 的按位取反的二进制数为:
1000100010001000
在十六进制中,它是 0x8888。因此,~0x7777 就是 0x8888。
按位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数expression:Number —
要转换的数字。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下例说明如何将 bitwise 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
相关 API 元素
| bitwise OR | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 expression1
和 expression2
转换为 32 位无符号整数,并在 expression1
或 expression2
的对应位为 1 的每个位的位置放置一个 1。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数expression1:Number —
一个数字。
| |
expression2:Number —
一个数字。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下面是一个 bitwise OR (
|
) 运算的示例: // 15 decimal = 1111 binary var a:Number = 15; // 9 decimal = 1001 binary var b:Number = 9; // 1111 | 1001 = 1111 trace(a | b); // returns 15 decimal (1111 binary)
|
(bitwise OR) 和 ||
(logical OR) 混淆。
相关 API 元素
|= bitwise OR assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 | expression2
的值。例如,下面两个语句是等效的:
x |= y; x = x | y;操作数
expression1:Number —
要转换的数字。
| |
expression2:Number —
要转换的数字。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下例使用 bitwise OR assignment (
|=
) 运算符: // 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)
相关 API 元素
>> bitwise right shift | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 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 之间整数的数字或表达式。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255:
var a:Number = 65535 >> 8; trace(a); // 255
00000000000000001111111111111111 binary (65535 decimal) >> 8 decimal -------------------- 00000000000000000000000011111111 binary (255 decimal)下例将 -8 转换为 32 位整数,然后右移 1 位,结果为十进制值 -4:
var a:Number = -8 >> 1; trace(a); // -4
11111111111111111111111111111000 binary (-8 decimal) >> 1 decimal -------------------- 11111111111111111111111111111100 binary (-4 decimal)
相关 API 元素
>>= bitwise right shift and assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
执行按位向右移位运算,并将结果存储在 expression
中。
下面的两个语句是等效的:
A >>= B; A = (A >> B);操作数
expression:Number —
要向右移位的数字或表达式。
| |
shiftCount:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下面的代码使用 bitwise right shift and assignment (
>>=
) 运算符:
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.
相关 API 元素
>>> bitwise unsigned right shift | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
此运算符与 bitwise right shift (>>
) 运算符基本相同,只是此运算符不保留原始表达式的符号,因为左侧的位始终用 0 填充。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位无符号整数,因此结果将是 0 到 4294967295 范围中的一个整数。
注意:ActionScript 没有提供补充的“bitwise unsigned left shift”运算符,但是可以使用 uint(expression << shiftCount)
获得相同的效果。
expression:Number —
要向右移位的数字或表达式。
| |
shiftCount:Number —
转换为介于 0 和 31 之间的整数的数字或表达式。
|
uint —
按位运算的结果。
|
示例
如何使用本示例
下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1 >>> 1; trace(a); // 2147483647
相关 API 元素
>>>= bitwise unsigned right shift and assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
执行无符号按位向右移位运算,并将结果存储在 expression
中。下面的两个语句是等效的:
A >>>= B; A = (A >>> B);操作数
expression:Number —
要向右移位的数字或表达式。
| |
shiftCount:Number —
转换为介于 0 和 31 之间整数的数字或表达式。
|
uint —
按位运算的结果。
|
示例
如何使用本示例
下面的示例将 -1 转换为 32 位整数并向右移 1 位:
var a:Number = -1; a >>>= 1; trace(a); // 2147483647
相关 API 元素
^ bitwise XOR | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 expression1
和 expression2
转换为 32 位无符号整数,并在 expression1
或 expression2
中为 1(但不是在两者中均为 1)的对应位的每个位的位置返回 1。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或 0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2 的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2 的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
操作数expression1:Number —
一个数字或计算结果为数字的表达式。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下面的示例对十进制的 15 和 9 使用 bitwise 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)
相关 API 元素
^= bitwise XOR assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 ^ expression2
的值。例如,下面两个语句是等效的:
x ^= y x = x ^ y操作数
expression1:Number —
一个数字或计算结果为数字的表达式。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。
|
int —
按位运算的结果。
|
示例
如何使用本示例
下例说明 bitwise XOR assignment (^=) 运算:
// 15 decimal = 1111 binary var a:Number = 15; // 9 decimal = 1001 binary var b:Number = 9; trace(a ^= b); // returns 6 decimal (0110 binary)
相关 API 元素
/*..*/ block comment delimiter | 运算符 |
/* comment */ /* comment comment */ |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
分隔一行或多行脚本注释。出现在 opening delimiter /*
和 closing delimiter */
之间的字符被 ActionScript 编译器解释为注释并忽略。这些分隔符用于标识多个连续行的注释;对于单行注释,请使用 //
分隔符。
如果省略 closing block comment delimiter (*/
) 或者尝试嵌套注释,则将收到错误消息。使用了 opening delimiter (/*
) 之后,无论在第一个closing delimiter (*/
) 之前放置了多少个 opening delimiter,第一个 closing delimiter 都会结束此注释。
comment:* —
任何字符。
|
示例
如何使用本示例
下面的脚本在脚本的开头使用 block comment delimiter:
/* 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 */
相关 API 元素
{ } braces (XML) | 运算符 |
myXML = <{tagName} {attributeName} = {attributeValue}>{content}{tagName}> |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算在 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>
相关 API 元素
[ ] brackets (XML) | 运算符 |
myXML[expression] |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
访问 XML 或 XMLList 对象的属性或特性。brackets 运算符允许您访问不能用 dot 运算符 (.
) 访问的属性名。
myXML:* —
一个 XML 或 XMLList 对象。
| |
expression:* —
计算结果为 XML 标签名称或属性名称的表达式。
|
示例
如何使用本示例
以下示例显示如何使用
[
和 ]
运算符来访问 XML 属性(该属性无法使用 dot 运算符访问,因为标记名称中包含连字符):
var myXML:XML = <a><foo-bar>44</foo-bar></a>; trace(myXML["foo-bar"]);
相关 API 元素
, comma | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算 expression1
,然后计算 expression2
,依此类推。此运算符主要与 for
循环语句一起使用,并通常与 parentheses ()
运算符一起使用。
expression1:* —
要计算的表达式。
| |
expression2:* —
要计算的表达式。
| |
expressionN:* —
要计算的任意数目的其他表达式。
|
Object —
所计算表达式的值。
|
示例
如何使用本示例
以下示例在
for
循环中使用了 comma (,
):
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
赋值,因为 assignment (=) 运算符的优先级高于 comma 运算符。计算第二个表达式 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
相关 API 元素
+ concatenation | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
连接(合并)字符串。如果其中一个表达式为字符串,则所有其他表达式都被转换为字符串,然后连接起来。
如果这两个表达式都是数字,则该运算符充当 addition 运算符。
操作数expression1:String —
要连接的字符串。
| |
expression2:String —
要连接的字符串。
|
String —
连接后的字符串。
|
示例
如何使用本示例
下例连接两个字符串。
var lastName:String = "Cola"; var instrument:String = "Drums"; trace(lastName + " plays " + instrument); // Cola plays Drums
trace("Number " + 8 + 0); // Number 80
var a:String = 3 + 10 + "asdf"; trace(a); // 13asdf var b:String = "asdf" + 3 + 10; trace(b); // asdf310
相关 API 元素
+ concatenation (XMLList) | 运算符 |
expression1 + expression2 |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将 XML 或 XMLList 值连接(合并)到 XMLList 对象中。只有当这两个操作数都是 XML 或 XMLList 值时,结果才为 XMLList 对象。
操作数expression1:* —
一个 XML 或 XMLList 值。
| |
expression2:* —
一个 XML 或 XMLList 值。
|
XMLList —
连接起来的 XMLList 对象。
|
示例
如何使用本示例
下例说明如何使用 XMLList (
+
) (concatenation) 运算符:
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>
相关 API 元素
+= concatenation assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 + expression2
的值。例如,以下两个语句的结果是相同的:
x += y; x = x + y;concatenation (
+
) 运算符的所有规则均适用于 concatenation assignment (+=
) 运算符。请注意,对 TextField
的 text
属性使用连接赋值(即 someTextField.text += moreText
)的效率远不如 TextField.appendText()
,尤其是对于包含大量内容的 TextField
而言。
操作数expression1:String —
字符串。
| |
expression2:String —
字符串。
|
Number —
连接运算的结果。
|
示例
如何使用本示例
下例使用
+=
运算符和字符串表达式:
var x1:String = "My name is "; x1 += "Gilbert"; trace(x1); // My name is Gilbert
相关 API 元素
+= concatenation assignment (XMLList) | 运算符 |
expression1 += expression2 |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 XMLList 对象 expression1
赋予 expression1 + expression2
的值。例如,以下两个语句的结果是相同的:
x += y; x = x + y;XMLList concatenation (
+
) 运算符的所有规则均适用于 XMLList concatenation assignment (+=
) 运算符。
操作数expression1:XMLList —
要向其中添加新值的 XMLList 对象。
| |
expression2:* —
一个 XML 或 XMLList 值。
|
示例
如何使用本示例
下例说明如何使用 XMLList concatenation assignment (
+=
) 运算符:
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>
相关 API 元素
?: conditional | 运算符 |
expression1 ? expression2 : expression3 |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算 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);
-- decrement | 运算符 |
--expression expression-- |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
操作数减去 1。该操作数可以是变量、数组中的元素或对象的属性。运算符的预先递减格式 --expression
将 expression
减 1,然后返回结果。此运算符的滞后递减格式 (expression--
) 将 expression
减 1,然后返回 expression
的初始值(减 1 之前的值)。
expression:Number —
一个数字或计算结果为数字的变量。
|
Number —
被递减的值的结果。
|
示例
如何使用本示例
此运算符的预先递减格式将
x
递减为 2 (x
- 1 = 2
),并将结果作为 y
返回:
var x:Number = 3; var y:Number = --x; // y is equal to 2
x
递减为 2 (x
- 1 = 2
),并将 x
的初始值作为结果 y
返回:
var x:Number = 3; var y:Number = x--; // y is equal to 3
i
减 1:
for (var i = 10; i > 0; i--) { trace(i); }
delete | 运算符 |
delete reference |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
破坏由 reference
指定的对象属性;如果在运算完成后该属性不存在,结果为 true
,否则结果为 false
。如果对不存在的属性或类中未定义的动态属性调用 delete
运算符,则该运算符返回 true
。
如果无法删除 reference
参数,delete
运算符可能失败并返回 false
。不能删除用 var
语句声明的固定属性或变量。固定属性是类定义中的变量或方法。
除非类是运行时添加的动态类,否则不能使用 delete
运算符破坏该类的属性。不能使用 delete
破坏密封类的属性。而应当将该属性设置为 null
。
注意:虽然无法删除对象,但可以通过删除对某个对象的所有引用来使该对象符合垃圾回收条件。对某个对象最常见的引用就是指向该对象的变量。可以通过将该变量设置为 null
来删除这样的引用。垃圾回收器会删除没有引用的所有对象。
reference:* —
要消除的属性的名称。
|
Boolean —
如果删除成功,则返回 true ,如果失败,则返回 false 。
|
示例
如何使用本示例
下例删除对象的一个属性:
// create the new object "account" var account:Object = new Object(); // assign property name to the account account.name = "Jon"; // delete the property delete account.name; trace(account.name); // undefined // delete a nonexistent property var fooDeleted:Boolean = delete account.foo; trace(fooDeleted); // true
下例删除数组元素的值,但是 length
属性的值不变:
var my_array:Array = new Array(); my_array[0] = "abc"; // my_array.length == 1 my_array[1] = "def"; // my_array.length == 2 my_array[2] = "ghi"; // my_array.length == 3 // my_array[2] is deleted, but Array.length is not changed delete my_array[2]; trace(my_array.length); // 3 trace(my_array); // abc,def,
下例说明如何将从 delete
返回的布尔值用作以后代码执行的条件。请注意,如果某项已被删除,则对该项再次调用 delete
将返回 false
。
var my_array:Array = [ "abc", "def", "ghi" ]; var deleteWasSuccessful:Boolean deleteWasSuccessful = delete my_array[0]; if(deleteWasSuccessful) delete my_array[1]; deleteWasSuccessful = delete my_array[0]; if(deleteWasSuccessful) delete my_array[2]; trace(my_array) // outputs: undefined,undefined,ghi
相关 API 元素
delete (XML) | 运算符 |
delete reference |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
删除由 reference
指定的 XML 元素或属性。
reference:XMLList —
用来指定要删除的 XML 元素或属性的 XMLList 对象。
|
Boolean —
始终返回 true 值。结果始终为 true ,因为 XMLList 操作数总是指向有效的(虽然可能为空)XMLList 对象。
|
示例
如何使用本示例
下例说明如何依次删除一个属性、一个元素、多个元素:
var x1:XML = <x1> <a id = "52">AYY</a> <a>AYY 2 </a> <b>BEE</b> <c>CEE</c> </x1>; trace(x1.toXMLString()); trace("___________"); delete x1.a.@id; trace(x1.toXMLString()); trace("___________"); delete x1.b; trace(x1.toXMLString()); trace("___________"); delete x1.a; trace(x1.toXMLString());
输出如下所示:
<x1>
<a id="52">AYY</a>
<a>AYY 2</a>
<b>BEE</b>
<c>CEE</c>
</x1>
___________
<x1>
<a>AYY</a>
<a>AYY 2</a>
<b>BEE</b>
<c>CEE</c>
</x1>
___________
<x1>
<a>AYY</a>
<a>AYY 2</a>
<c>CEE</c>
</x1>
___________
<x1>
<c>CEE</c>
</x1>
下例说明如何删除某个元素的所有内容(包括属性和子元素),而不删除该元素本身:
var xml:XML = <order> <item id="121">hamburger</item> <item id="122">fries</item> <item id="123">chocolate shake</item> </order>; delete xml.item[1].*; delete xml.item[1].@*; trace(xml);
此示例的输出如下所示:
<order>
<tem id="121">hamburger</item>
<item/>
<item id="123">chocolate shake</item>
</order>
.. descendant accessor | 运算符 |
myXML..childElement1..@attributeName |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
定位到 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()
方法,而不要使用 descendant (..) 运算符,如下例所示:
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 属性的名称或某个特性的名称。
|
示例
如何使用本示例
下例说明如何使用 descendant accessor (..) 运算符返回 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
相关 API 元素
/ division | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
expression1
除以 expression2
。除法运算的结果为双精度浮点数。
expression:Number —
一个数字或计算结果为数字的变量。
|
Number —
运算的浮点结果。
|
示例
如何使用本示例
下例说明被除数是正数、负数或 0 时,除以 0 时得到的不同结果。
trace(3/0); // Infinity trace(-3/0); // -Infinity trace(0/0); // NaN
相关 API 元素
/= division assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 / expression2
的值。例如,下面两个语句是等效的:
x /= y; x = x / y;操作数
expression1:Number —
一个数字或计算结果为数字的变量。
| |
expression2:Number —
一个数字或计算结果为数字的变量。
|
Number —
一个数字。
|
示例
如何使用本示例
下面的代码说明如何将 division assignment (
/=
) 运算符与变量和数字结合使用:
var a:Number = 10; var b:Number = 2; a /= b; trace(a); // 5
相关 API 元素
。 dot | 运算符 |
object.property_or_method |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
访问类变量和方法,获取并设置对象属性并分隔导入的包或类。
操作数object:Object —
类的实例。此对象可以是任何内置 ActionScript 类的实例或者您所定义类的实例。此操作数总是在 dot (.) 运算符的左侧。
| |
property_or_method:* —
与对象相关联的属性或方法的名称。内置类的所有有效方法和属性都会在该类的方法和属性摘要表中列出。此操作数总是在 dot (.) 运算符的右侧。
|
* —
在点右侧命名的变量、方法或属性。
|
示例
如何使用本示例
下例在导入 Timer 类时将 dot 运算符用作分隔符。
import flash.utils.Timer;
var obj:Object = new Object(); obj.propertyA = "hello"; trace(obj.propertyA); // hello
相关 API 元素
。 dot (XML) | 运算符 |
myXML.childElement myXML.@attributeName |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
定位到 XML 或 XMLList 对象的子元素,或(结合使用 @ 运算符)返回 XML 或 XMLList 对象的属性。返回的对象是 XMLList,因为有多个子元素或子属性可以匹配。
要返回名称与 ActionScript 保留字匹配的元素,请使用 XML.elements()
方法或 XML.descendants()
方法代替 XML dot (.) 运算符,如以下示例所示:
var xml:XML = <student id="206"> <class name="Trigonometry" /> <class name="Spanish 2" /> </student>; trace(xml.elements("class")); trace(xml.descendants("class"));
myXML:Object —
XML 或 XMLList 对象。
| |
childElement:* —
XML 属性的名称。
| |
attributeName:* —
属性的名称。
|
XMLList —
指定的 XMLList。
|
示例
如何使用本示例
下例说明如何使用 dot (.) 运算符来返回 XML 对象的子元素以及元素的属性:
var myXML:XML = <employee id = "42"> <firstName>Billy</firstName> <lastName>Einstein</lastName> </employee>; trace(myXML.firstName); // Billy trace(myXML.@id); // 42
相关 API 元素
== equality | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
测试两个表达式是否相等。如果表达式相等,则结果为 true
。
如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:
- 如果 int、uint 和 Boolean 类型具有相同的值,则将其值视为相等。
- 值相匹配的两个 Number 被视为相等,除非两个值都为
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 对象的一个元素与另一个操作数相匹配。
- XMLList 对象的
expression1:Object —
一个数字、字符串、布尔值、变量、对象、数组或函数。
| |
expression2:Object —
一个数字、字符串、布尔值、变量、对象、数组或函数。
|
Boolean —
如果这两个表达式相等,则值为 true ,否则为 false 。
|
示例
如何使用本示例
下例将 equality (
==
) 运算符与 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
指向同一个数组。对于这两个数组,equality 运算符将返回 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
相关 API 元素
> greater than | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
比较两个表达式,确定 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
var c:Number = 5; var d:String = "4"; trace(c > d); // true var e: Number = 2; var f:Boolean = true; trace(e > f); // true
>= greater than or equal to | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
比较两个表达式,确定 expression1
是大于等于 expression2
(值为 true
)还是 expression1
小于 expression2
(值为 false
)。
expression1:Object —
一个字符串、整数或浮点数。
| |
expression2:Object —
一个字符串、整数或浮点数。
|
Boolean —
如果 expression1 大于等于 expression2 ,则值为 true ;否则值为 false 。
|
示例
如何使用本示例
在下面的示例中,greater than or equal to (>=) 运算符用于确定当前小时是否大于或等于 12:
if (new Date().getHours() >= 12) { trace("good afternoon"); } else { trace("good morning"); }
相关 API 元素
in | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算属性是否为特定对象的一部分。若要使用 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
相关 API 元素
++ increment | 运算符 |
++expression expression++ |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将表达式加 1。该表达式可以是变量、数组中的元素或对象的属性。运算符的预先递增格式 (++expression
) 将 expression
加 1,然后返回结果。此运算符的滞后递增格式 (expression++
) 将 expression
加 1,然后返回 expression
的初始值(加 1 之前的值)。
expression:Number —
一个数字或计算结果为数字的变量。
|
Number —
递增的结果。
|
示例
如何使用本示例
下例将 ++ 用作
while
循环中的预先递增运算符,并说明添加到数组中的值是已经递增的值:
var preInc:Array = new Array(); var i:int = 0; while (i < 10) { preInc.push(++i); } trace(preInc); // 1,2,3,4,5,6,7,8,9,10
while
循环中的滞后递增运算符,并说明添加到数组中的值是初始值:
var postInc:Array = new Array(); var i:int = 0; while (i < 10) { postInc.push(i++); } trace(postInc); // 0,1,2,3,4,5,6,7,8,9
while
循环运行五次:
var i:int = 0; while (i++ < 5) { trace("this is execution " + i); } /* output: this is execution 1 this is execution 2 this is execution 3 this is execution 4 this is execution 5 */
!= inequality | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
测试结果是否与 equality (==
) 运算符正好相反。如果 expression1
等于 expression2
,则结果为 false
。与 equality (==
) 运算符一样,相等的定义取决于所比较的数据类型。
如果两个操作数的数据类型相匹配,则相等的定义取决于操作数的数据类型:
- 如果 int、uint 和 Boolean 类型具有相同的值,则将其值视为相等。
- 值相匹配的两个 Number 被视为相等,除非两个值都为
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 对象的一个元素与另一个操作数相匹配。
- XMLList 对象的
expression1:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
| |
expression2:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
Boolean —
如果表达式不相等,则值为 true ,否则为 false 。
|
示例
如何使用本示例
下面的示例说明 inequality (
!=
) 运算符的结果:
trace(5 != 8); // true trace(5 != 5); // false
if
语句中使用 inequality !=
运算符:
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
相关 API 元素
instanceof | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算表达式的原型链是否包括 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 。
|
示例
如何使用本示例
以下示例创建了 Sprite 类的一个实例,名为
mySprite
,并使用 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
instanceof
运算符不能与接口一起使用。由于 DisplayObject 类是实现 IBitmapDrawable 接口的 Sprite 类的超类,因此 is
运算符的计算结果为 true
。
var mySprite:Sprite = new Sprite(); trace(mySprite instanceof IBitmapDrawable); // false trace(mySprite is IBitmapDrawable); // true
相关 API 元素
is | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算对象是否与特定数据类型、类或接口兼容。使用 is
运算符代替 instanceof
运算符进行类型比较。还可以使用 is
运算符来检查对象是否实现某个接口。
Boolean —
如果 expression1 与 expression2 中指定的数据类型、类或接口兼容,则为 true ,否则为 false 。
|
示例
如何使用本示例
以下示例创建了 Sprite 类的一个实例,名为
mySprite
,并使用 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
相关 API 元素
< less than | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
比较两个表达式,确定 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
<= less than or equal to | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
比较两个表达式,并确定 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
// line comment delimiter | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
表示脚本注释的开始。出现在 comment delimiter (//
) 和行结束字符之间的字符被解释为注释并被忽略。此分隔符用于单行注释;对于多个连续行的注释,请使用 /*
和 */
分隔符。
comment:* —
任何字符。
|
示例
如何使用本示例
下例说明单行注释:
// Any text following a line comment delimiter is ignored during compilation
相关 API 元素
&& logical AND | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
如果为 false
或可以转换为 false
,则返回 expression1
,否则返回 expression2
。可以转换为 false
的值的示例有 0、NaN
、null
和 undefined
。如果将函数调用用作 expression2
,则当 expression1
计算结果为 false
时,将不调用该函数。
如果这两个操作数的类型均为 Boolean,则仅当两个操作数均为 true
时,结果才为 true
,如下表所示:
表达式 | 计算结果 |
---|---|
|
|
|
|
|
|
|
|
expression1:* —
任何类型的值或表达式。
| |
expression2:* —
任何类型的表达式的值。
|
* —
如果这两个操作数的类型均为 Boolean,则结果为布尔值。否则,结果为任一表达式的值。
|
示例
如何使用本示例
下面的示例使用 logical 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!"); }
相关 API 元素
&&= logical AND assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 && expression2
的值。例如,下面两个语句是等效的:
x &&= y; x = x && y;操作数
expression1:* —
任何类型的值。
| |
expression2:* —
任何类型的值。
|
* —
如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。
|
示例
如何使用本示例
在以下示例中,除非
myVar
变量为 null,否则 myVar
更改为 XML 标签。在本示例中,只要 myVar
变量的计算结果不是 false
,该变量就会修改。该技术利用以下算法:如果 expression1
的计算结果为 false
,则 logical AND &&
运算符返回值 expression1
,否则返回值 expression2
。如果 myVar
已经包含求值结果为 true
的值,则会修改 myVar
以模拟 XML 标签。但是,如果 myVar
包含求值结果为 false
的值(如 null
、""
(空字符串)和 undefined
等值),则不更改 myVar
。
var myVar:String = 'tag'; myVar &&= "<" + myVar + "/>"; trace (myVar); // output: <tag/>
if
语句可以获得同样的效果,如下例所示:
var myVar:String = 'tag'; if (myVar != '') { myVar = "<" + myVar + "/>"; } trace (myVar); // output: <tag/>
if
语句的好处是代码较易读,而使用 logical AND assignment (&&=
) 运算符的好处是不必指定给定数据类型的确切默认值。
相关 API 元素
! logical NOT | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对变量或表达式的布尔值取反。如果 expression
是具有绝对值或经过转换的值 true
变量,则值 !expression
为 false
。如果表达式 x && y
的计算结果为 false
,则表达式 !(x && y)
的计算结果为 true
。
下面的表达式说明了使用 logical NOT (!) 运算符的结果:
!true
返回false
。!false
返回true
。
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
。
相关 API 元素
|| logical OR | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
如果 expression1
为 true
或可转换为 true
,则返回该表达式,否则返回 expression2
。如果将函数调用用作 expression2
,那么当 expression1
的计算结果为 true
时,则不会调用该函数。
如果这两个操作数的类型均为 Boolean,那么,当这两个表达式或其中一个表达式为 true
时,结果为 true
;只有当这两个表达式均为 false
时,结果才为 false
,如下表中所示:
表达式 | 计算结果 |
---|---|
|
|
|
|
|
|
|
|
expression1:* —
任何类型的值。
| |
expression2:* —
任何类型的值。
|
* —
如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。
|
示例
如何使用本示例
以下示例在
if
语句中使用 logical 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
),所以将出现消息“logical 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"); }
相关 API 元素
||= logical OR assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 || expression2
的值。例如,下面两个语句是等效的:
x ||= y; x = x || y;操作数
expression1:* —
任何类型的值。
| |
expression2:* —
任何类型的值。
|
* —
如果这两个操作数都是 Boolean 数据类型的成员,则结果为布尔值。否则,结果将为任一表达式的值。
|
示例
如何使用本示例
下面的示例为先前已声明的变量
myVar
分配默认值。该技术利用以下原理:如果 expression1
的计算结果为 true
,logical OR (||
) 运算符返回 expression1
的值,否则返回 expression2
的值。如果 myVar
已包含计算结果为 true
的值,则不更改 myVar
。但是,如果 myVar
包含计算结果为 false
的值(例如 null
、""
(空字符串)和 undefined
等值),将为 myVar
分配值 "default"
。
myVar ||= "default";
相关 API 元素
% modulo | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算 expression1
除以 expression2
的余数。如果有任一操作数不是数字值,则 modulo (%
) 运算符会尝试将它转换为数字。
模运算结果的符号与被除数(第一个数字)的符号相匹配。例如,-4 % 3
和 -4 % -3
的计算结果都为 -1
。
expression1:Number —
一个数字或计算结果为数字的表达式。只包含数字字符的字符串的计算结果为一个数字。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。只包含数字字符的字符串的计算结果为一个数字。
|
Number —
算术运算的结果。
|
示例
如何使用本示例
下面的数值示例使用 modulo (
%
) 运算符:
trace(12 % 5); // 2 trace(4.3 % 2.1); // 0.0999999999999996 trace(4 % 4); // 0
%
) 运算符仅返回余数。第二个 trace 返回 0.0999999999999996 而不是预期的 0.1,因为在二进制计算中对浮点数精度有限制。
相关 API 元素
%= modulo assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 % expression2
的值。下面的两个语句是等效的:
x %= y; x = x % y;操作数
expression1:Number —
一个数字或计算结果为数字的表达式。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。
|
Number —
算术运算的结果。
|
示例
如何使用本示例
下面的示例将值 4 赋予变量
a
:
var a:Number = 14; var b:Number = 5; a %= b; trace(a); // 4
相关 API 元素
* multiplication | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
将两个数值表达式相乘。如果两个表达式都是整数,则积为整数。如果其中任何一个或两个表达式是浮点数,则积为浮点数。
操作数expression1:Number —
一个数字或计算结果为数字的表达式。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。
|
Number —
一个整数或浮点数。
|
示例
如何使用本示例
下面的语句将整数 2 与 3 相乘,结果为整数 6:
trace(2*3); // 6
trace(2.0 * 3.1416); // 6.2832
*= multiplication assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 * expression2
的值。例如,以下两个表达式是等效的:
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
相关 API 元素
:: name qualifier | 运算符 |
namespace::property namespace::method() namespace::xmlObject.property namespace::xmlObject.@attribute |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
标识属性、方法或 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
相关 API 元素
new | 运算符 |
|
运行时版本: | Flash Player 5 |
对类实例进行实例化。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);
相关 API 元素
{} object initializer | 运算符 |
object = {name1 : value1, name2 : value2,... nameN : valueN} |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
创建一个新对象,并用指定的 name
和 value
属性对初始化该对象。使用此运算符的效果与使用 new Object
语法并用 assignment 运算符填充属性对的效果相同。新建对象的原型通常命名为 Object 对象。
此运算符也用于标记与流控制语句(for
、while
、if
、else
、switch
)和函数相关联的连续代码块。
object:Object —
要创建的对象。
| |
name1,2,...N:Object —
属性名。
| |
value1,2,...N:Object —
每个 name 属性的对应值。
|
Object —
一个 Object 对象。
|
示例
如何使用本示例
以下代码的第一行使用 object initializer ({}) 运算符创建一个空对象;第二行使用构造函数创建一个新对象:
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";
相关 API 元素
() parentheses | 运算符 |
(expression1[, expression2]) (expression1, expression2) function(parameter1,..., parameterN) |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对一个或多个参数执行分组运算,执行表达式的顺序计算,或者括住一个或多个参数并将它们作为参量传递给括号前面的函数。
用法 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
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
var today:Date = new Date(); trace(today.getFullYear()); // outputs current year function traceParameter(param):void { trace(param); } traceParameter(2 * 2); // 4
相关 API 元素
( ) parentheses (XML) | 运算符 |
myXML.(expression) |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算 ECMAScript for XML (E4X) XML 构造中的表达式。例如,myXML.(lastName == "Smith")
标识名为 lastName
且值为 "Smith"
的 XML 元素。结果为 XMLList 对象。
myXML:* —
一个 XML 或 XMLList 对象。
| |
expression:* —
用来定义匹配元素的表达式。
|
XMLList —
由括号指定的 XMLList。
|
示例
如何使用本示例
下例说明如何使用括号来标识元素和属性:
var myXML:XML = <employees> <employee id = "42"> <firstName>Joe</firstName> <lastName>Smith</lastName> </employee> <employee id = "43"> <firstName>Susan</firstName> <lastName>Jones</lastName> </employee> <employee id = "44"> <firstName>Anne</firstName> <lastName>Smith</lastName> </employee> </employees>; trace(myXML.employee.(lastName == "Smith").@id.toXMLString()); // 42 // 44 trace(myXML.employee.(Number(@id) > 42).@id.toXMLString()); // 43 // 44
相关 API 元素
/ RegExp delimiter | 运算符 |
/pattern/flags |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
如果用在字符之前和之后,则表示字符具有字面值,并被视作一个正则表达式 (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
相关 API 元素
=== strict equality | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
测试两个表达式是否相等,但不执行自动数据转换。如果两个表达式(包括它们的数据类型)相等,则结果为 true
。
strict equality (===
) 运算符与 equality (==
) 运算符在以下三个方面相同:
- 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
- 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
- 表示对象、数组和函数的变量按引用进行比较。如果两个这样的变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
===
) 运算符与 equality (==
) 运算符仅在下列两个方面不同:
- strict equality 运算符仅针对数字类型(Number、int 和 uint)执行自动数据转换,而 equality 运算符 () 针对所有的原始数据类型执行自动数据转换。
- 当比较
null
和undefined
时,equality 运算符将返回false
。
var x:Number = 1
)和原始对象(例如,var x:Number = new Number(1)
)这两种情况下,equality 运算符在 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
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
false
。但是,在 ActionScript 3.0 中,这两个变量的数据类型均为 Number,因此将按值对它们进行比较,等于运算和全等运算的结果均为 true
。
操作数expression1:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
| |
expression2:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
Boolean —
比较的布尔结果。
|
示例
如何使用本示例
下例说明当值和数据类型都匹配时,strict equality (
===
) 运算符与 equality (==
) 运算符相同:
var string1:String = "5"; var string2:String = "5"; trace(string1 == string2); // true trace(string1 === string2); // true
==
) 运算符却进行这样的转换:
// 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
var num1:Number = 1; var num2:int = 1; var num3:uint = 1; trace(num1 === num2); // true trace(num1 === num3); // true
null
和 undefined
视为不相等,但是 equality 运算符却将它们视为相等:
trace(null == undefined); // true trace(null === undefined); // false
相关 API 元素
!== strict inequality | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
测试结果与 strict equality (===
) 运算符正好相反。除了仅转换 int 和 uint 数据类型外,strict equality 运算符执行的运算与 inequality 运算符相同。
如果 expression1
等于 expression2
,并且它们的数据类型相同,则结果为 false
。
strict inequality (!==
) 运算符与 inequality (!=
) 运算符在以下三个方面相同:
- 数字和布尔值按值进行比较,如果它们具有相同的值,则视为相等。
- 如果字符串表达式具有相同的字符数,而且这些字符都相同,则这些字符串表达式相等。
- 表示对象、数组和函数的变量按引用进行比较。如果两个这样的变量引用同一个对象、数组或函数,则它们相等。而两个单独的数组即使具有相同数量的元素,也永远不会被视为相等。
!=
) 运算符仅在以下两个方面不同:
- strict inequality (
!==
) 运算符仅针对数字类型(Number、int 和 uint)执行自动数据转换,而 inequality!=
运算符则针对所有的原始数据类型执行自动数据转换。 - 当比较
null
和undefined
时,strict inequality (!==
) 运算符返回true
。
expression1:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
| |
expression2:Object —
数字、字符串、布尔值、变量、对象、数组或函数。
|
Boolean —
比较的布尔结果。
|
示例
如何使用本示例
下面代码中的注释说明使用 equality (
==
)、strict equality (===
) 和 strict inequality (!==
) 的运算的返回值:
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
相关 API 元素
" string delimiter | 运算符 |
"text" |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
如果用在字符之前和之后,则表示字符具有字面值,并被视作一个字符串,而不是一个变量、数值或其他 ActionScript 元素。
操作数text:String —
零个或一系列字符。
|
示例
如何使用本示例
以下示例使用引号 (") 指示变量
yourGuess
的值是文本字符串 "Prince Edward Island"
,而不是变量名称。
var yourGuess:String = "Prince Edward Island"; submit_btn.onRelease = function() { trace(yourGuess); }; // Prince Edward Island
相关 API 元素
- subtraction | 运算符 |
|
运行时版本: | Flash Player 9 |
用于取反或减法。
用法 1:用于求反时,该运算符将数值表达式的符号取反。
用法 2:用于减法时,该运算符对两个数值表达式执行算术减法运算,从 expression1
中减去 expression2
。两个表达式都为整数时,差为整数。其中任何一个或两个表达式为浮点数时,差为浮点数。
expression1:Number —
一个数字或计算结果为数字的表达式。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。
|
Number —
一个整数或浮点数。
|
示例
如何使用本示例
用法 1:以下语句将表达式 2 + 3 的符号取反:
trace(-(2 + 3)); // -5
trace(5 - 2); // 3
下面的语句从浮点数 3.25 中减去浮点数 1.5:
trace(3.25 - 1.5); // 1.75
-= subtraction assignment | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
对 expression1
赋予 expression1 - expression2
的值。例如,下面两个语句是等效的:
x -= y ; x = x - y;
必须将字符串表达式转换为数字;否则,结果为 NaN
(非数字)。
expression1:Number —
一个数字或计算结果为数字的表达式。
| |
expression2:Number —
一个数字或计算结果为数字的表达式。
|
Number —
算术运算的结果。
|
示例
如何使用本示例
下例使用 subtraction assignment (
-=
) 运算符从 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
相关 API 元素
: type | 运算符 |
[modifiers] var variableName:type function functionName():type { ... } function functionName(parameter1:type, ..., parameterN:type) [:type]{ ... } |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
用于指定数据类型;此运算符可指定变量类型、函数返回类型或函数参数类型。在变量声明或赋值中使用时,此运算符指定变量的类型;在函数声明或定义中使用时,此运算符指定函数的返回类型;在函数定义中与函数参数一起使用时,此运算符指定该参数预期的变量类型。
类型检查总是发生在运行时。但是,当编译器设置为严格模式时,所有类型都在编译时检查,并在出现不匹配的情况时生成错误。在使用 dot (.
) 运算符进行赋值运算、函数调用和类成员解除引用的过程中,可能出现不匹配情况。
您可以使用的类型包括所有本机对象类型,您定义的类和接口以及 void
。可识别的本机类型有 Boolean、Number、int、uint 和 String。所有内置类都被视为本机类型,因此也受支持。
如果未指定数据类型,则变量、函数返回值或函数参数将被视为无类型,这意味着值可以属于任何数据类型。如果要明确说明您打算使用无类型值,可以将星号 (*) 用作类型注释。当用作类型注释时,星号字符等同于将变量、函数返回类型或函数参数保留为无类型。
操作数variableName:* —
变量的标识符。
| |
type:* —
本机数据类型、您已定义的类名称或者接口名称。
| |
functionName:Function —
函数的标识符。
| |
parameter:* —
函数参数的标识符。
|
示例
如何使用本示例
用法 1:以下示例声明了一个类型为 String 且名为
userName
的公共变量,并为其分配了一个空字符串:
var userName:String = "";
randomInt()
的函数指定某函数的返回类型(将该函数的返回类型指定为 int):
function randomInt(integer:int):int { return Math.round(Math.random()*integer); } trace(randomInt(8));
squareRoot()
的函数,该函数采用名为 val
且类型为 Number 的参数,返回 val
的平方根(也是 Number 类型):
function squareRoot(val:Number):Number { return Math.sqrt(val); } trace(squareRoot(121));
相关 API 元素
typeof | 运算符 |
|
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
计算 expression
并返回一个指定表达式的数据类型的字符串。该结果只可能是下列六个字符串值:boolean
、function
、number
、object
、string
和 xml
。如果向用户定义的类应用此运算符,则结果为字符串 object
。之所以包括 typeof
运算符是为了向后兼容。使用 is
运算符可以检查类型是否兼容。
expression:Object —
一个要计算的对象。
|
String —
类型为 expression 的字符串表示形式。下表说明对各个类型的表达式使用 typeof 运算符的结果。
|
示例
如何使用本示例
下例说明针对各个对象和值使用
typeof
时的结果。
trace(typeof Array); // object trace(typeof Date); // object trace(typeof 3); // number
new
运算符来创建对象,原始对象的数据类型都相同。这与 ActionScript 的早期版本不同,在早期版本中,typeof
运算符对于变量 b
返回 object
:
var a:String = "sample"; var b:String = new String("sample"); trace(typeof a); // string trace(typeof b); // string
相关 API 元素
void | 运算符 |
|
运行时版本: | Flash Player 9 |
计算表达式,然后放弃其值,返回 undefined
。void
运算符通常用在一些比较中,这些比较使用 ==
运算符来测试未定义的值。
expression:Object —
要计算的表达式。
|
* —
值 undefined 。
|
< > XML literal tag delimiter | 运算符 |
myXML= <{tagName} {attributeName} = {attributeValue}>{content}{tagName}> |
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9 |
在 XML 文本中定义 XML 标签。使用正斜杠 / 可以定义结束标签。
操作数myXML:* —
一个 XML 或 XMLList 对象。
| |
tagName:* —
计算结果为 XML 标签名称的表达式。
| |
attributeName:* —
计算结果为 XML 属性名称的表达式。
| |
attributeValue:* —
计算结果为 XML 属性值的表达式。
| |
content:* —
计算结果为 XML 标签内容的表达式。
|
示例
如何使用本示例
以下示例显示如何使用
<
和 >
运算符定义 XML 文本:
var x:XML = <item id= "324">cola</item>;
相关 API 元素
Tue Jun 12 2018, 11:21 AM Z