Flash 7播放器也有了很多变化,这些变化影响到一个SWF文件怎样访问另一个SWF文件,怎样载入外部数据,怎样访问本地设置和数据(如隐私设置和本地永久共享对象)。最后,一些现有的特性也已经改变。
如果你现有的脚本是针对Flash 6或更早版本的播放器编写的,但又想针对Flash 7播放器发布,你可能需要修改你的脚本,以便它们符合Flash 7播放器的执行要求并能按设计思路工作。下面我们就介绍这些相关知识。
一、遵从ECMA-262 Edition 4方案
Flash 7播放器作了一些修改,使之更加符合ECMA-262 Edition 4方案。在动作脚本语言2.0中,除了可以使用基于类的编程技术外,也增加了其它特性,某些行为也已修改。当你针对Flash 7播放器发布且使用动作脚本语言2.0时,你可以不把一种对象类型指派给另一个。这些功能不要求你更新现有的脚本,但是,如果你针对Flash 7播放器发布发布你的脚本,你可以使用这些功能,然后继续修订和改进。
与上面提到的变化不同,下表列出的变化(其中也有一些不完全遵从ECMA方案)可能导致现有脚本的执行结果与以前不同。如果你在针对Flash 7播放器发布的现有脚本中使用了这些特性,请查看一下这些变化,确保你的代码能够按照设计计划运行,或确定是否需要重写代码。特别是,计算undefined(未定义)项的结果在某些情况下是不同的,你应该在针对Flash 7播放器发布的脚本中初始化所有的变量。
针对Flash 7播放器发布的SWF文件 | 针对早期Flash播放器发布的SWF文件 |
支持区分大小写(只是大小写不同的变量名被解释为不同的变量)。这种变化也影响用#include指令载入的文件和使用LoadVars.load()命令载入的外部变量。 | 不区分大小写(只是大小写不同的变量名被解释为相同的变量)。 |
在数值上下文中计算undefined项的返回结果是NaN。 | 在数值上下文中计算undefined项的返回结果是0。 |
myCount +=1; trace(myCount); // NaN |
myCount +=1; trace(myCount); // 1 |
当undefined项被转换为字符串时,其结果是undefined。 | 当undefined项被转换为字符串时,其结果是""(空字符串)。 |
firstname = "Joan "; lastname = "Flender"; trace(firstname + middlename + lastname); // Joan undefinedFlender |
firstname = "Joan "; lastname = "Flender"; trace(firstname + middlename + lastname); // Joan Flender |
当把字符串转换为逻辑值时,如果该字符串的长度>0,其结果为true;如果该字符串为空串,其结果为false。 | 当把字符串转换为逻辑值时,首先把它转换为数值,如果该数值非0,其结果为true,否则为false。 |
当设置数组的长度时,只有有效的数字字符串可设置长度。例如,"6"起作用,但" 6"或"6xyz"不起作用。 | 当设置数组的长度时,即使是一个畸形的数字字符串也可设置长度: |
my_array=new Array(); my_array[" 6"] ="x"; trace(my_array.length); // 0 my_array["6xyz"] ="x"; trace(my_array.length); // 0 my_array["6"] ="x"; trace(my_array.length); // 7 |
my_array=new Array(); my_array[" 6"] ="x"; trace(my_array.length); // 7 my_array["6xyz"] ="x"; trace(my_array.length); // 7 my_array["6"] ="x"; trace(my_array.length); // 7 |
二、设置和本地数据的域名规则
在Flash 6播放器中,当访问本地设置(如摄像机或麦克风访问许可)或本地永久数据(共享对象)时,默认使用超域匹配规则。也就是说,存放在here.xyz.com、there.xyz.com和xyz.com的SWF文件的设置和数据是共享的,且都存储在xyz.com中。
在Flash 7播放器中,默认使用精确域匹配规则。也就是说,存放在here.xyz.com的文件的设置和数据存储在here.xyz.com中,存放在there.xyz.com的文件的设置和数据存储在there.xyz.com中,等等。
新的属性System.exactSettings让你指定使用哪种规则。这个属性支持针对在Flash 6或更高版本播放器发布的文件。对于针对Flash 6播放器发布的文件,本属性的默认值是false,这意味着使用超域匹配规则。对于针对Flash 7播放器发布的文件,本属性的默认值是true,这意味着使用精确域匹配规则。
如果你使用设置和永久本地数据,且想要针对Flash 7播放器发布一个Flash 6播放器的SWF文件,你可能需要在发布的文件中把本属性值设置为false。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |