Flash5ActionScript教程 四十三
b>在Flash 5中打开Flash 4文件和输出Flash 4动画应注意的问题一、在Flash 5中打开Flash 4文件
在Flash 5中,动作脚本语言已经发生了很大的变化。 现在,它已经是一种有多种数据类型和使用点语法的面向对象语言。确切地说,Flash 4的动作脚本语言仅有一种数据类型:字符型。Flash 4在表达式中使用不同的操作符来指明值应该以字符还是以数值来处理,而在Flash 5中,你可以使用一组操作符来操作所有的数据类型。
当你用Flash 5打开一个Flash 4创建的文件时,Flash自动转换动作脚本表达式,使之与Flash 5的新语法兼容。你将在脚本代码中看到下面的数据类型和操作符的转换:
Flash 4中的=是数值相等操作符;而在Flash 5中,==是相等操作符,=是赋值操作符。Flash 4中的任何=操作符均被自动转换为==操作符。 | |
Flash自动执行类型转换,确保相应的操作符起到应有的作用。因为在Flash 5中引入了多种数据类型,所以下面的操作有了新的含义: | |
+, ==, !=, $#@60;$#@62;, $#@60;, $#@62;, $#@62;=, $#@60;= | |
在Flash 4的动作脚本中,这些操作符总是数值操作符;而在Flash 5中,因操作数的数据类型不同,它们所起的作用也不同。为了防止在导入文件中出现歧义,Flash自动给这些操作符两边的所有操作数插入Number函数。数值常数已经明确是数值,因而无需把它们包含在Number 函数中。 | |
在Flash 4中,换码序列\n 产生一个回车符(ASCII 13);而在Flash 5中,为了遵守ECMA-262标准,\n 产生换行符(ASCII 10)。在Flash 4的FLA文件中的\n序列被自动转换为\r。 | |
在Flash 4中,& 操作符用于字符串相加;而在Flash 5中, &是位与操作符。现在,字符串相加操作符是add。 Flash 4文件中的任何&操作符将被自动转换为add操作符。 | |
在Flash 4中,很多函数不需要结尾的圆括号,如Get Timer、Set Variable、Stop和 Play等。为了语法上的一致 贔lash 5中,getTimer函数和所有的动作都要写上结尾的圆括号。转换时这些圆括号被自动添加。 | |
当对一个不存在的电影剪辑执行getProperty 函数时,在Flash 5中它返回的值为undefined(未定义)而不是0。在Flash 5动作脚本中,undefined == 0的比较结果是false (假)。当转换Flash 4文件时,Flash在进行相等比较中引入Number函数来纠正这种问题。在下面的例子中,Number函数强制把undefined 转换为0,因而使比较成功: | |
getProperty("clip", _width) == 0 Number(getProperty("clip", _width)) == Number(0) |
注:如果在Flash 4动作脚本中使用了Flash 5的关键字作变量名,Flash 5返回语法错误。要纠正这种问题,只有把所有此类变量换名。
下表列出了ActionScript中所有的关键字:
break | for | new | var |
continue | function | return | void |
delete | if | this | while |
else | in | typeof | with |
二、在Flash 5中创建Flash 4内容
如果你要使用Flash 5创建Flash 4播放器可以播放的内容(在导出动画时选择Flash 4版本),那就不能使用Flash 5动作脚本的全部新功能。不过,很多新的动作脚本功能还是可用的。Flash 4仅有一种基本的原始数据类型,这种数据类型用于处理数值和字符串。当你为Flash 4播放器设计动画时,你就得使用已不赞成使用字符串操作符。 这种操作符可以在工具箱字符串操作符类别中找到。
如果打算导出Flash 4动画,设计时可以使用下列Flash 5功能:
数组和对象访问操作符([] )。 | |
点操作符 (.)。 | |
逻辑操作符、赋值操作符和前递增、后递增/递减操作符。 | |
取模操作符(%),数学对象(Math)的所有方法和属性。 | |
Flash 4播放器本身并不支持这些操作符和函数。Flash 5必须以一系列近似值来导出。这就意味着得到的结果是近似的。此外,因为在SWF文件中包含了一系列的近似值,Flash 4的SWF文件要比Flash 5的SWF文件大。 | |
for、while、do..while、break和continue 动作。 | |
print和printAsBitmap 动作。 |
如果打算导出Flash 4动画,设计时不能使用下列Flash 5功能:
自定义函数 | |
XML支持 | |
局部变量 | |
预定义对象(Math除外) | |
电影剪辑动作 | |
多种数据类型 | |
使用点语法的eval(例如,eval("_root.movieclip.variable")) | |
return | |
new | |
delete | |
typeof | |
for..in | |
keycode | |
targetPath | |
escape | |
globalToLocal 和localToGlobal | |
hitTest | |
isFinite 和 inNaN | |
parseFloat 和 parseInt | |
unescape | |
_xmouse 和 _ymouse | |
_quality |