• 文字广告位
  • 文字广告位
  • 文字广告位
您现在的位置: 站长手册 >> 软件教程 >> Flash >> 正文
站内搜索
Google
AS代码2.0:针对Flash Player7
        ★★★ 【字体:

AS代码2.0:针对Flash Player7

雅虎收藏夹 百度收藏 Google书签 Yahoo书签 新浪ViVi 搜狐网摘 365Key网摘 天极网摘 diglog 和讯网摘 POCO网摘 YouNote网摘 博拉网 天下图摘 Del.icio.us digg reddit spurl BlinkList blogmarks
人气: 来源:网络 作者:佚名 所属栏目:Flash [切换到繁體中文]

    Flash Player 7比以前的Flash播放器支持更多的动作脚本命令,可以使用这些命令来编写更稳健的脚本。不过,如果在现有的脚本中使用了这些命令,并针对Flash 7播放器发布该脚本,它也许不能正确工作。例如,如果你有一个脚本,其中有一个函数名使用了Error,该脚本也许可以正确编译,但并不能按照Flash 7播放器的方式运行,因为在现在的动作脚本语言中Error是一个内建类(因此,Error是一个保留字)。可以通过修改脚本,把Error函数名改为其它名字来解决,如ErrorCondition. 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.

    三、SWF文件之间的跨域和子域访问

    当你开发一系列互相通讯的SWF文件时,例如,当使用loadMovie()、MovieClip.loadMovie()、 MovieClipLoader.LoadClip()命令或本地连接对象时,你可能把这些动画文件存放在不同的域或一个超域的不同的子域中。

    在针对Flash 5或更早版本的播放器发布的文件中,跨域或子域访问不受限制。

    在针对Flash 6播放器发布的文件中,你可以使用LocalConnection.allowDomain事件处理函数或System.security.allowDomain()方法来指定允许跨域访问(例如,让在someOtherSite.com域的文件访问在someSite.com域的文件),且无需用命令来允许子域访问(例如,在store.someSite.com子域的文件可以访问在www.someSite.com子域的文件)。

    在针对Flash 7播放器发布的文件中,SWF文件之间的访问与早期版本有两个方面的不同。首先,Flash 7播放器执行精确域匹配而不是超域匹配规则。因此,被访问的文件(即使是针对早期的Flash播放器版本而不是Flash 7播放器发布的文件)必须显式指定允许跨域或子域访问。其次,存放在使用安全协议(HTTPS)站点中的文件,必须显式指定允许来自使用不安全协议(HTTP或FTP)的站点的文件的访问。

    因为Flash 7播放器执行精确域匹配而不是超域匹配规则,如果你想要针对Flash 7播放器发布的文件能够访问你现有的脚本,你可能需要修改这些脚本。(你仍然可以针对Flash 6播放器发布修改过的文件。)

    如果你在文件中使用LocalConnection.allowDomain()或System.security.allowDomain()语句,并指定允许访问超域站点,你必须修改你的参数来指定准确的域。下面的代码说明你可能需要进行的修改:

    // 允许存放在www.someSite.com或store.someSite.com域的SWF文件访问System.security.allowDomain("someSite.com");// 存放在www.anyOldSite.com域的SWF文件中的Flash 6播放器命令my_lc.allowDomain = function(sendingDomain){ return(sendingDomain=="someSite.com");} // 允许针对Flash 7播放器发布的SWF文件访问的对应命令System.security.allowDomain("www.someSite.com", "store.someSite.com");my_lc.allowDomain = function(sendingDomain) { return(sendingDomain=="www.someSite.com" || sendingDomain=="store.someSite.com");}

    如果你当前还没有使用这些语句,你也可能需要添加这样的语句。

    例如,如果你的SWF文件存放在www.someSite.com域,且你想允许存放在store.someSite.com域针对Flash 7播放器发布的SWF文件访问,你必须给存放在www.someSite.com域的文件添加下列语句(你仍然可以针对Flash 6播放器发布存放在www.someSite.com的文件):

    System.security.allowDomain("store.someSite.com");my_lc.allowDomain = function(sendingDomain) { return(sendingDomain=="store.someSite.com");}

[1] [2] 下一页

网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
姓 名: *(必填项) ·注册用户·
Email: QQ号:
评 分: 1分 2分 3分 4分 5分
  • 您可以发表评论支持你喜欢的文章。
  • 请遵守《互联网电子公告服务管理规定》
  • 请遵守中华人民共和国各项有关法律法规。
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 评论人需对自己在使用评论过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表个人观点,与本网站立场无关。
站内教程搜索
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | | 京ICP备 05004866号 |
版权所有 2007-2008 站长手册 WWW.ZZSC.ORG 业务联系 zzsc.org#gmail.com