论文部分内容阅读
摘要:针对两款开发制作Flash作品的工具软件中的脚本语言,分别从两者的相同点、各自的独有的特点三个方面详细进行了分析比较,得出了两者在实际开发制作过程中各有优长的结论,提出了根据要开发制作的Flash作品的具体情况,灵活使用两种工具软件的思想,并且也给出具体的运用方法。
关键词:swish;flash;flash动画;脚本语言
中图分类号:TP312文献标识码:A文章编号:1009-3044(2009)04-0913-02
Comparison Analysis on Script Language of SWiSHmax2 and FlashCS3
ZHANG Liu-yi, TAO An, HUANG Yi-ming
(College of PLA Artillery, Hefei 230031, China)
Abstract: Facing with the script language of two kinds of software in developing flash works, each has its good points is made as conclusion in this paper based on the comparisons of their characteristics individual and in common. Meanwhile, the thoughts and way of using the two kinds of software in developing flash works based on the actual situation are also put forward.
Key words: swish; flash; flash animation; script language
1 引言
利用Adobe公司的Flash工具软件开发制作Flash作品(包括动画、演示文稿、网站、游戏、应用程序等等)是顺理成章的,可谓正宗。当前Flash的最流行版本为FlashCS3(最新版本FlashCS4刚刚于2008年11月15日正式发布,本文暂不做论述)。但能开发制作Flash作品的工具软件还有许多,其中最具代表性是SWiSHzone公司的SWiSH工具软件。当前SWiSH的最新版本为SWiSHmax2(版本4)。SWiSH 在绝大多数的功能上都可以替代Flash,而且使用操作更加简单方便。特别是它内置有350多种效果,使用户能以极其简单操作,制作出非常精彩的Flash作品。
Flash拥有功能强大的脚本语言ActionScript,FlashCS3的脚本语言升级为ActionScript 3.0 ,同时兼容ActionScript 2.0 。与Flash相似,SWiSH也拥有功能强大的脚本语言,而且与ActionScript基本相同。SWiSHmax2的脚本语言基本与ActionScript 2.0等同。下面,我们就SWiSHmax2的脚本语言与FlashCS3的脚本语言进行对比分析。
2 两种脚本语言基本相同,绝大部分内容完全一致
1) ActionScript遵循ECMA-262标准,属于ECMAScript,是面向对象的程序设计(OOP)语言,其语法规则和风格非常接近于JavaScript。SWiSH产生来源于Flash,SWiSH的脚本语言也来源于Flash的脚本语言ActionScript,也就是说,SWiSH脚本语言的语法规则和风格也非常接近于JavaScript。
2) 象一般面向对象的编程(OOP)语言一样,两种脚本语言都具有对象、实例、类成员和接口。都具有继承性、封装性、多态性。
3) 两种脚本语言都主要面向“帧(Frame)”对象和“影片剪辑(Movie Clip)” 对象编程。
4) 在Flash和SWiSH编程过程中都可调用外部脚本文件,所使用的方法一样,通过#include语句调用。
5) 两种脚本语言的语法规则、保留字、操作符、函数、语句、对象、类等等基本相同。
6) Flash和SWiSH编写脚本的方式方法基本一致。Flash里有动作面板和编程助手,SWiSHmax2里有完全相似的脚本面板和编程助手(协助面板)。两者编程的基本方法都是通过面板添加脚本,甚至用户可以在完全不懂脚本语言的情况下编写脚本。也可以在专家模式下直接在脚本窗口输入脚本代码。
3 SWiSH脚本语言相比Flash脚本语言也有创新特点
SWiSH和Flash之间有版本对应关系,SWiSH落后于Flash的版本。 SWiSHmax2对应于FlashMX,落后Flash CS3三个版本。SWiSHmax2脚本语言与Flash CS3脚本语言本身就有版本上的差异。
SWiSHmax2之前版本明确称其脚本语言为SWiSHScript, SWiSHmax2没有明确其脚本语言的名称,但在它的脚本行中却有<%SWISHSCRIPT%>的标识,并且明确称其脚本语言类似于ActionScript。虽然,SWiSHmax2脚本语言整体上弱于Flash CS3的脚本语言,但它也许多创新的特点,有的甚至是对ActionScript的扩展与增强。主要表现在以下方面:
1) SWiSHmax2的脚本语言的创新特点首先表现在与其之前版本脚本语言的进步。如:以前版本的SWiSH假设用到没有定义过的变量,则会出现不可预知的问题,SWiSHmax2则能给出一个错误信息,如:"cannot find _loadXXXXXXXX".这种情况常在从一个swf文件调用另一个swf文件时出现。
2) eval()函数的使用,以前SWiSH脚本中可以简化为:(objname)._x,现在SWiSHmax2脚本中要严格为:eval(objname)._x。
3) 对保留字的限制与输出的级别无关,例如:Date在SWF5之后是保留字,如果使用了Date作为变量名,即使选择输出SWF4,也一样要显示错误。
4) 编程对象进一步扩展,SWiSHmax2可以将简单的形状(Shape)和文本(Text)作为编程对象。这是对ActionScript编程对象的扩展。
5) 变量与字符串的转换不同:变量用来存储数字和字符串,根据脚本中上下文的意义,可以确定所存储的是数字还是字符串,并且是否需要转换。操作符 , <, <=, ==, !=, => 和 >,可以将数字、字符串或变量作为操作数。在SWF4中,变量被假设为数字,并且自动进行适当的转换。在SWF5及其之后中,都按真实的值存储变量。操作符“ ”具有字符串优先性质,操作符“<, <=, ==, !=, => 和 >”则有数字优先性质,而操作符“add, lt, le, eq, ne, ge, gt”则假设变量是字符串并具有字符串优先性质。这些转换命令通过脚本中<%SWISHSCRIPT%>行来体现。
6) 物理特性:SWiSHmax2的扩展了对象或影片剪辑的属性,增加了物理特性:速度、加速度和阻力。用户可以为对象或影片剪辑定义这些物理属性。这是SWiSH脚本语言的创新。
7) SWiSHmax2之前版本,都是使用“精灵(Sprite)”这一术语,SWiSHmax2开始使用与相同的术语——影片剪辑(Movie Clip),为了与以前的兼容性,在SWiSHmax2脚本中仍然支持以前的Sprite对象。但Sprite并不能支持所有的Movie Clip对象的属性和方法。
4 Flash脚本语言中有SWiSH无可比拟的功能特点
4.1 ActionScript 3.0相对ActionScript2.0的功能增强和提高
由于FlashCS3可以支持两种脚本语言,即:ActionScript2.0和 ActionScript 3.0。所以Flash CS3脚本语言相对SWiSHmax2脚本语言优越性首先是ActionScript 3.0相对ActionScript2.0的功能增强和提高。ActionScript 3.0 的脚本编写功能超越了 ActionScript 的早期版本。主要表现在:ActionScript 3.0更方便创建拥有大型数据集和面向对象的可重用代码库的高度复杂应用程序。虽然 ActionScript 3.0 对于在 Adobe Flash Player 9 中运行的内容并不是必需的,但它使用新型的虚拟机 AVM2 实现了性能的改善。ActionScript 3.0 代码的执行速度可以比以前ActionScript 代码快 10 倍。
旧版本的 ActionScript 虚拟机 AVM1 执行 ActionScript 1.0 和 ActionScript 2.0 代码。为了向后兼容现有内容和原先内容,Flash Player 9 仍支持 AVM1。
虽然 ActionScript3.0 包含了ActionScript 1.0 和 ActionScript 2.0的许多类和功能,但 ActionScript 3.0 在架构和概念上与之前的 ActionScript 版本是有较大区别的。
ActionScript 3.0的改进主要分为两部分,一是新增的核心语言功能,二是改进的 Flash Player API能够更好地控制低级对象。
新增的核心语言功能包括:1) 针对运行时的异常错误的情形比原来多;2) 类型信息在运行时保留,并可用于多种目的;3) 引入了密封类的概念;4) 使闭包方法可以自动记起它的原始对象实例;5) 实现了 ECMAScript for XML (E4X);6) 实现了对正则表达式的支持;7) 命名空间使用统一资源标识符 (URI);8)包含 int 和 uint 两种类型,改变了原来单一数值类型 Number。
改进的Flash Player API 功能包括:1) 应用DOM3 事件模型,提供了一种生成并处理事件消息的标准方法;2) 新增用于访问 Flash Player 显示列表的 API;3) 处理动态数据和内容;4)各种 API 提供了对数据的低级访问;包含一个用于所有与文本相关的 API 的 flash.text 包。
4.2 滤镜的使用
FlashCS3在用户界面状态即可使用7个滤镜(投影,模糊,发光,斜角,渐变发光,渐变斜角,渐变颜色),另外2个滤镜(ConvolutionFilter,DisplacementMapFilter)只有通过ActionScript代码来使用。SWiSHmax2也使用SWF8(FlashPlayer8及之后的播放器所支持的滤镜)滤镜,也是9个,它们是:BevelFilter,BlurFilter,ColorMatrixFilter,ConvolutionFilter,DisplacementMapFilter,DropShadowFilter,GlowFilter,GradientBevelFilter,GradientGlowFilter。但是,它们的重要区别是:FlashCS3可以在普通文档编辑状态使用滤镜,也可以通过脚本代码使用滤镜。而SWiSHmax2只有通过脚本代码才能使用滤镜。
4.3 行为面板的使用
FlashCS3具有SWiSHmax2所没有的“行为”概念。所谓行为就是预定义的完全某些常见任务的脚本,用户可以方便地将行为添加到 FLA 文件中的对象。 行为提供了的以下功能:帧的导航;加载外部 SWF 文件和 JPEG 文件;控制影片剪辑的层叠顺序;影片剪辑拖动等。
行为提供了使用户避免编写 ActionScript代码的便捷途径,也可帮助用户了解 ActionScript 的工作方式。
行为仅对 ActionScript 2.0 及更早版本可用,并且只有在“动作”面板中工作时才可用,在外部脚本文件中工作时则不可用。通常,用户可以在文档中选择一个触发对象(如影片剪辑或按钮),选择“行为”面板上的“增加”,然后选择行为。
5 扬长避短相互补充,灵活运用两种Flash工具
通过以上分析比较可以得出结论,单纯就脚本语言本身而言,FlashCS3明显比SWiSHmax2高一档次,整体功能优越,给代码开发者提供明显高于SWiSHmax2的编程空间。但就开发制作Flash作品而言,许多类型的Flash作品都对脚本的依赖性很低,许多作品几乎不需要脚本。而有着350种效果的SWiSHmax2完成这些任务能体现出更大的优越性,工作效率大大提高,而且,对于大多数情况下的脚本需求,SWiSHmax2的脚本语言和SWiSHmax2所提供的编程工具也方便快捷完成。
根据实际工作中开发制作Flash作品的具体类型特点不同,恰当选择使用开发工具无疑是最佳选择。Flash和SWiSH在使用方法的相似性和脚本语言的一致性,使同一用户使用两种工具进行开发不仅可能,而且易行,两个工具之间的转换是平滑的。
两种开发工具的综合运用可以有两种形式:一是同一开发者根据不同作品的不同特点而选择一种工具;二是同一开发者对同一个作品,根据其不同内容、环节、功能等特点的不同而采用不同的工具,即:同一个作品中有的部分是用Flash开发制作的,有的部分是用SWiSH开发制作的。虽然,两者的源文件不同(*.fla和*.swi),且不能互相导入,利用*.swf文件互相导入又完全损失了脚本信息。
同一个作品使用两种工具开发制作的方法是:首先,将适合SWiSH制作的部分用SWiSH制作出来,输出为*.swf文件;其次,使用SWF文件反编译工具(选用能反编译出脚本代码的版本)将*.swf文件反编译成*.fla文件;第三,将*.fla文件调入Flash完成适合Flash的部分。
参考文献:
[1] 2008 Adobe Systems Incorporated. Help Resource Center[EB/OL]. http://www.adobe.com/support/documentation/.
[2] 2008 SWiSHzone.com Pty Ltd. SWiSH Max 2 User’s Guide[EB/OL]. http://www.swishzone.com/manuals/max2/index.html.
张六一(1961-),男,河南南阳人,高级工程师,研究方向:多媒体技术。
关键词:swish;flash;flash动画;脚本语言
中图分类号:TP312文献标识码:A文章编号:1009-3044(2009)04-0913-02
Comparison Analysis on Script Language of SWiSHmax2 and FlashCS3
ZHANG Liu-yi, TAO An, HUANG Yi-ming
(College of PLA Artillery, Hefei 230031, China)
Abstract: Facing with the script language of two kinds of software in developing flash works, each has its good points is made as conclusion in this paper based on the comparisons of their characteristics individual and in common. Meanwhile, the thoughts and way of using the two kinds of software in developing flash works based on the actual situation are also put forward.
Key words: swish; flash; flash animation; script language
1 引言
利用Adobe公司的Flash工具软件开发制作Flash作品(包括动画、演示文稿、网站、游戏、应用程序等等)是顺理成章的,可谓正宗。当前Flash的最流行版本为FlashCS3(最新版本FlashCS4刚刚于2008年11月15日正式发布,本文暂不做论述)。但能开发制作Flash作品的工具软件还有许多,其中最具代表性是SWiSHzone公司的SWiSH工具软件。当前SWiSH的最新版本为SWiSHmax2(版本4)。SWiSH 在绝大多数的功能上都可以替代Flash,而且使用操作更加简单方便。特别是它内置有350多种效果,使用户能以极其简单操作,制作出非常精彩的Flash作品。
Flash拥有功能强大的脚本语言ActionScript,FlashCS3的脚本语言升级为ActionScript 3.0 ,同时兼容ActionScript 2.0 。与Flash相似,SWiSH也拥有功能强大的脚本语言,而且与ActionScript基本相同。SWiSHmax2的脚本语言基本与ActionScript 2.0等同。下面,我们就SWiSHmax2的脚本语言与FlashCS3的脚本语言进行对比分析。
2 两种脚本语言基本相同,绝大部分内容完全一致
1) ActionScript遵循ECMA-262标准,属于ECMAScript,是面向对象的程序设计(OOP)语言,其语法规则和风格非常接近于JavaScript。SWiSH产生来源于Flash,SWiSH的脚本语言也来源于Flash的脚本语言ActionScript,也就是说,SWiSH脚本语言的语法规则和风格也非常接近于JavaScript。
2) 象一般面向对象的编程(OOP)语言一样,两种脚本语言都具有对象、实例、类成员和接口。都具有继承性、封装性、多态性。
3) 两种脚本语言都主要面向“帧(Frame)”对象和“影片剪辑(Movie Clip)” 对象编程。
4) 在Flash和SWiSH编程过程中都可调用外部脚本文件,所使用的方法一样,通过#include语句调用。
5) 两种脚本语言的语法规则、保留字、操作符、函数、语句、对象、类等等基本相同。
6) Flash和SWiSH编写脚本的方式方法基本一致。Flash里有动作面板和编程助手,SWiSHmax2里有完全相似的脚本面板和编程助手(协助面板)。两者编程的基本方法都是通过面板添加脚本,甚至用户可以在完全不懂脚本语言的情况下编写脚本。也可以在专家模式下直接在脚本窗口输入脚本代码。
3 SWiSH脚本语言相比Flash脚本语言也有创新特点
SWiSH和Flash之间有版本对应关系,SWiSH落后于Flash的版本。 SWiSHmax2对应于FlashMX,落后Flash CS3三个版本。SWiSHmax2脚本语言与Flash CS3脚本语言本身就有版本上的差异。
SWiSHmax2之前版本明确称其脚本语言为SWiSHScript, SWiSHmax2没有明确其脚本语言的名称,但在它的脚本行中却有<%SWISHSCRIPT%>的标识,并且明确称其脚本语言类似于ActionScript。虽然,SWiSHmax2脚本语言整体上弱于Flash CS3的脚本语言,但它也许多创新的特点,有的甚至是对ActionScript的扩展与增强。主要表现在以下方面:
1) SWiSHmax2的脚本语言的创新特点首先表现在与其之前版本脚本语言的进步。如:以前版本的SWiSH假设用到没有定义过的变量,则会出现不可预知的问题,SWiSHmax2则能给出一个错误信息,如:"cannot find _loadXXXXXXXX".这种情况常在从一个swf文件调用另一个swf文件时出现。
2) eval()函数的使用,以前SWiSH脚本中可以简化为:(objname)._x,现在SWiSHmax2脚本中要严格为:eval(objname)._x。
3) 对保留字的限制与输出的级别无关,例如:Date在SWF5之后是保留字,如果使用了Date作为变量名,即使选择输出SWF4,也一样要显示错误。
4) 编程对象进一步扩展,SWiSHmax2可以将简单的形状(Shape)和文本(Text)作为编程对象。这是对ActionScript编程对象的扩展。
5) 变量与字符串的转换不同:变量用来存储数字和字符串,根据脚本中上下文的意义,可以确定所存储的是数字还是字符串,并且是否需要转换。操作符 , <, <=, ==, !=, => 和 >,可以将数字、字符串或变量作为操作数。在SWF4中,变量被假设为数字,并且自动进行适当的转换。在SWF5及其之后中,都按真实的值存储变量。操作符“ ”具有字符串优先性质,操作符“<, <=, ==, !=, => 和 >”则有数字优先性质,而操作符“add, lt, le, eq, ne, ge, gt”则假设变量是字符串并具有字符串优先性质。这些转换命令通过脚本中<%SWISHSCRIPT%>行来体现。
6) 物理特性:SWiSHmax2的扩展了对象或影片剪辑的属性,增加了物理特性:速度、加速度和阻力。用户可以为对象或影片剪辑定义这些物理属性。这是SWiSH脚本语言的创新。
7) SWiSHmax2之前版本,都是使用“精灵(Sprite)”这一术语,SWiSHmax2开始使用与相同的术语——影片剪辑(Movie Clip),为了与以前的兼容性,在SWiSHmax2脚本中仍然支持以前的Sprite对象。但Sprite并不能支持所有的Movie Clip对象的属性和方法。
4 Flash脚本语言中有SWiSH无可比拟的功能特点
4.1 ActionScript 3.0相对ActionScript2.0的功能增强和提高
由于FlashCS3可以支持两种脚本语言,即:ActionScript2.0和 ActionScript 3.0。所以Flash CS3脚本语言相对SWiSHmax2脚本语言优越性首先是ActionScript 3.0相对ActionScript2.0的功能增强和提高。ActionScript 3.0 的脚本编写功能超越了 ActionScript 的早期版本。主要表现在:ActionScript 3.0更方便创建拥有大型数据集和面向对象的可重用代码库的高度复杂应用程序。虽然 ActionScript 3.0 对于在 Adobe Flash Player 9 中运行的内容并不是必需的,但它使用新型的虚拟机 AVM2 实现了性能的改善。ActionScript 3.0 代码的执行速度可以比以前ActionScript 代码快 10 倍。
旧版本的 ActionScript 虚拟机 AVM1 执行 ActionScript 1.0 和 ActionScript 2.0 代码。为了向后兼容现有内容和原先内容,Flash Player 9 仍支持 AVM1。
虽然 ActionScript3.0 包含了ActionScript 1.0 和 ActionScript 2.0的许多类和功能,但 ActionScript 3.0 在架构和概念上与之前的 ActionScript 版本是有较大区别的。
ActionScript 3.0的改进主要分为两部分,一是新增的核心语言功能,二是改进的 Flash Player API能够更好地控制低级对象。
新增的核心语言功能包括:1) 针对运行时的异常错误的情形比原来多;2) 类型信息在运行时保留,并可用于多种目的;3) 引入了密封类的概念;4) 使闭包方法可以自动记起它的原始对象实例;5) 实现了 ECMAScript for XML (E4X);6) 实现了对正则表达式的支持;7) 命名空间使用统一资源标识符 (URI);8)包含 int 和 uint 两种类型,改变了原来单一数值类型 Number。
改进的Flash Player API 功能包括:1) 应用DOM3 事件模型,提供了一种生成并处理事件消息的标准方法;2) 新增用于访问 Flash Player 显示列表的 API;3) 处理动态数据和内容;4)各种 API 提供了对数据的低级访问;包含一个用于所有与文本相关的 API 的 flash.text 包。
4.2 滤镜的使用
FlashCS3在用户界面状态即可使用7个滤镜(投影,模糊,发光,斜角,渐变发光,渐变斜角,渐变颜色),另外2个滤镜(ConvolutionFilter,DisplacementMapFilter)只有通过ActionScript代码来使用。SWiSHmax2也使用SWF8(FlashPlayer8及之后的播放器所支持的滤镜)滤镜,也是9个,它们是:BevelFilter,BlurFilter,ColorMatrixFilter,ConvolutionFilter,DisplacementMapFilter,DropShadowFilter,GlowFilter,GradientBevelFilter,GradientGlowFilter。但是,它们的重要区别是:FlashCS3可以在普通文档编辑状态使用滤镜,也可以通过脚本代码使用滤镜。而SWiSHmax2只有通过脚本代码才能使用滤镜。
4.3 行为面板的使用
FlashCS3具有SWiSHmax2所没有的“行为”概念。所谓行为就是预定义的完全某些常见任务的脚本,用户可以方便地将行为添加到 FLA 文件中的对象。 行为提供了的以下功能:帧的导航;加载外部 SWF 文件和 JPEG 文件;控制影片剪辑的层叠顺序;影片剪辑拖动等。
行为提供了使用户避免编写 ActionScript代码的便捷途径,也可帮助用户了解 ActionScript 的工作方式。
行为仅对 ActionScript 2.0 及更早版本可用,并且只有在“动作”面板中工作时才可用,在外部脚本文件中工作时则不可用。通常,用户可以在文档中选择一个触发对象(如影片剪辑或按钮),选择“行为”面板上的“增加”,然后选择行为。
5 扬长避短相互补充,灵活运用两种Flash工具
通过以上分析比较可以得出结论,单纯就脚本语言本身而言,FlashCS3明显比SWiSHmax2高一档次,整体功能优越,给代码开发者提供明显高于SWiSHmax2的编程空间。但就开发制作Flash作品而言,许多类型的Flash作品都对脚本的依赖性很低,许多作品几乎不需要脚本。而有着350种效果的SWiSHmax2完成这些任务能体现出更大的优越性,工作效率大大提高,而且,对于大多数情况下的脚本需求,SWiSHmax2的脚本语言和SWiSHmax2所提供的编程工具也方便快捷完成。
根据实际工作中开发制作Flash作品的具体类型特点不同,恰当选择使用开发工具无疑是最佳选择。Flash和SWiSH在使用方法的相似性和脚本语言的一致性,使同一用户使用两种工具进行开发不仅可能,而且易行,两个工具之间的转换是平滑的。
两种开发工具的综合运用可以有两种形式:一是同一开发者根据不同作品的不同特点而选择一种工具;二是同一开发者对同一个作品,根据其不同内容、环节、功能等特点的不同而采用不同的工具,即:同一个作品中有的部分是用Flash开发制作的,有的部分是用SWiSH开发制作的。虽然,两者的源文件不同(*.fla和*.swi),且不能互相导入,利用*.swf文件互相导入又完全损失了脚本信息。
同一个作品使用两种工具开发制作的方法是:首先,将适合SWiSH制作的部分用SWiSH制作出来,输出为*.swf文件;其次,使用SWF文件反编译工具(选用能反编译出脚本代码的版本)将*.swf文件反编译成*.fla文件;第三,将*.fla文件调入Flash完成适合Flash的部分。
参考文献:
[1] 2008 Adobe Systems Incorporated. Help Resource Center[EB/OL]. http://www.adobe.com/support/documentation/.
[2] 2008 SWiSHzone.com Pty Ltd. SWiSH Max 2 User’s Guide[EB/OL]. http://www.swishzone.com/manuals/max2/index.html.
张六一(1961-),男,河南南阳人,高级工程师,研究方向:多媒体技术。