Flash 4 动作脚本只有一种真正的数据类型:字符串。它在表达式中使用不同类型的运算符,用于指示将值作为字符串还是数字来处理。在其后的 Flash 版本中,对所有数据类型都可以使用一组运算符。
在使用 Flash 5 或更高版本打开在 Flash 4 中创建的文件时,Flash 会自动转换动作脚本表达式,以使它们与新语法兼容。在动作脚本代码中可以看到如下的数据类型和运算符转换:
=
运算符用于数字等式。在 Flash 5 和更高的版本中,==
是等于运算符,而 =
是赋值运算符。Flash 4 文件中的所有 =
运算符都将被自动转换为 ==
。 +
, ==
, !=
, <>
, <
, >
, >=
, <=
在 Flash 4 动作脚本中,这些运算符始终是数字运算符。在 Flash 5 和更高版本中,它们的行为根据操作数的数据类型而不同。为了防止在导入的文件中出现语义差异,在这些运算符的所有操作数两边都会插入一个 Number()
函数。(常数已经明显是数字,所以不会在常数两边插入 Number()
函数)。
\n
生成一个回车符 (ASCII 13)。在 Flash 5 和更高版本中,为了遵循 ECMA-262 标准,\n
会生成一个换行符 (ASCII 10)。Flash 4 FLA 文件中的 \n
序列将被自动转换为 \r
。 &
运算符用于连接字符串。在 Flash 5 和更高版本中,&
是按位“与”运算符。字符串连接运算符现在为 add
。Flash 4 中的所有 &
运算符都将被自动转换为 add
运算符。 Get Timer
、Set Variable
、Stop
和 Play
。为了保持语法一致,getTimer
函数和所有动作的后面现在都需要有括号。这些括号在转换时会自动添加。 getProperty
函数时,它所返回的值为 undefined
,而不是 0。在 Flash 4 之后的动作脚本中,undefined == 0
为 false
(在 Flash 4 中,undefined == 1
)。在 Flash 5 和更高版本中,通过在等式比较中引入 Number()
函数,在转换 Flash 4 文件时解决了此问题。在下面的示例中,Number()
会强制将 undefined
转换为 0,因此比较将会成功:
getProperty("clip", _width) == 0 Number(getProperty("clip", _width)) == Number(0)
注意:如果在 Flash 4 动作脚本中使用了任何 Flash 5 或更高版本的保留字作为变量名,在 Flash MX 2004 中进行编译时该语法将返回一个错误。若要解决此问题,请重命名这些变量(在所有出现的位置)。请参见关键字和命名变量。