Flash的ActionScript(简称AS)代码控制是Flash实现交互性的重要组成部分,也是区别于其他动画软件的看家本领。今年新发布的Flash MX Professional 2004的动作脚本语言已经升级到2.0,它是一种面向对象的脚本语言,执行ECMA-262脚本语言规范,支持继承、强类型和事件模型。使用动作脚本语言2.0可以编写出更加稳健的脚本。
动作脚本语言2.0的新特性包括:新的语言元素、改进的编辑和调试工具、引入更多、的面向对象编程模型。
本系列文章将向大家详细介绍AS代码2.0的各种新特性以及新的安全模型与旧版SWF文件的变化关系。
新的和有变化的语言元素
Flash MX Pro 2004的动作脚本语言2.0增加了一些新的语言元素,并对已有的语言元素做了有益的改进。(以下以字母排列为序)
注意:要使用这些元素,必须在发布文档时指定目标播放器为Flash 7播放器。
(1) Array.sort()和Array.sortOn()方法
让你添加参数来指定附加的排序选项,如按升序排序和按降序排序、排序时是否区分大小写,等等。
(2) Button.menu、MovieClip.menu和TextField.menu属性
与新的ContextMenu和ContextMenuItem类协同工作,让你能够建立右键快捷菜单选项与按钮、电影剪辑或文本框对象之间的关联。
(3) ContextMenu类和ContextMenuItem类
让你能够定制右键快捷菜单。
(4) Error类和throw与try..catch..finally命令
让你能够实施更加稳健的异常处理。
(5) LoadVars.addRequestHeader()和XML.addRequestHeader()方法
可以添加和修改用POST方法发送的HTTP头(如Content-Type或SOAPAction)。
(6) MMExecute()函数
使你能够从动作脚本中发布Flash JavaScript API命令。
(7) Mouse.onMouseWheel事件
(仅适用于Windows)当用户使用鼠标滚轮时生成Mouse.onMouseWheel事件侦听器。
(8) MovieClip.getNextHighestDepth()方法
让你能够在运行期创建电影剪辑实例,并能保证它们的对象在父电影剪辑的z轴空间中其它对象的前面渲染。MovieClip.getInstanceAtDepth()方法让你能够使用深度作为搜索索引,访问动态创建电影剪辑实例。
(9) MovieClip.getSWFVersion()方法
让你能够确定载入的SWF文件所支持的Flash播放器版本的。
(10) MovieClip.getTextSnapshot()方法和TextSnapshot对象
让你能够处理电影剪辑中静态文本框的文本。
(11) MovieClip._lockroot属性
让你能够把某个电影剪辑指定为载入它里面的任何电影剪辑的根电影剪辑(_root),或指定在某个_root电影剪辑被载入另一个电影剪辑时保持其_root属性不变。
(12) MovieClipLoader类
让你能够监测把文件载入电影剪辑的进度。
(13) NetConnection类和NetStream类
让你能够流式播放本地视频文件(FLV文件)。
(14) PrintJob类
让你(和用户)在Flash播放器中拥有更多的打印控制能力。
(15) Sound.onID3事件处理函数
让你能够访问包含MP3文件的Sound(声音)对象中的ID3数据。
(16) Sound.ID3属性
让你能够访问作为MP3文件的一部分的元数据。
(17) System类
拥有新的对象和方法,且System.capabilities对象拥有几种新的属性。
(18) TextField.condenseWhite属性
让你能够删除在浏览器中渲染的HTML文本框中的多余空格。
(19) TextField.mouseWheelEnabled属性
让你能够指定当鼠标指针位于文本框中且用户滚动鼠标滚轮时,文本框的内容是否应该滚动。
(20) TextField.StyleSheet类
让你能够创建包含文本格式化规则(如字体大小、颜色和其他格式样式)的样式表对象。
(21) TextField.styleSheet属性
让你能够把一个样式表对象指派给文本框。
(22) TextFormat.getTextExtent()方法
接收一个新的参数,且它返回的对象包含一个新成员。
(23) XML.addRequestHeader()方法
让你能够添加或改变用POST方法发送的HTTP请求头(如Content-Type或SOAPAction)。
新的安全模型与旧版SWF文件
Flash播放器以前具有确定两个域是否相同的规则,这一点在Flash 7播放器中已经改变。此外,决定来自于某个HTTP域的SWF文件是否可以访问、怎样访问来自HTTPS域的SWF文件、从HTTPS域载入的数据的规则也已经改变。在大多数情况下,这些变化没什么影响,除非用户特别针对Flash 7播放器导出SWF文件。
但是,如果针对Flash 6播放器或更早版本的播放器发布SWF文件,该文件将从存储在服务器中的文件载入数据,且如果该文件在Flash 7播放器中播放,用户可能会看到一个以前没有出现过的对话框,询问是否允许访问。我们可以通过在存储数据的站点中执行一个策略文件来防止该对话框的显示。
如果你在使用运行期共享库,也可能需要执行策略文件。如果装载或被装载的SWF文件是针对Flash 7播放器发布的,且二者并非来自完全相同的域,就要使用策略文件来设置许可访问。