張六一 陶 安 黃奕銘
摘要:針對(duì)兩款開發(fā)制作Flash作品的工具軟件中的腳本語言,分別從兩者的相同點(diǎn)、各自的獨(dú)有的特點(diǎn)三個(gè)方面詳細(xì)進(jìn)行了分析比較,得出了兩者在實(shí)際開發(fā)制作過程中各有優(yōu)長的結(jié)論,提出了根據(jù)要開發(fā)制作的Flash作品的具體情況,靈活使用兩種工具軟件的思想,并且也給出具體的運(yùn)用方法。
關(guān)鍵詞:swish;flash;flash動(dòng)畫;腳本語言
中圖分類號(hào):TP312文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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工具軟件開發(fā)制作Flash作品(包括動(dòng)畫、演示文稿、網(wǎng)站、游戲、應(yīng)用程序等等)是順理成章的,可謂正宗。當(dāng)前Flash的最流行版本為FlashCS3(最新版本FlashCS4剛剛于2008年11月15日正式發(fā)布,本文暫不做論述)。但能開發(fā)制作Flash作品的工具軟件還有許多,其中最具代表性是SWiSHzone公司的SWiSH工具軟件。當(dāng)前SWiSH的最新版本為SWiSHmax2(版本4)。SWiSH 在絕大多數(shù)的功能上都可以替代Flash,而且使用操作更加簡單方便。特別是它內(nèi)置有350多種效果,使用戶能以極其簡單操作,制作出非常精彩的Flash作品。
Flash擁有功能強(qiáng)大的腳本語言ActionScript,F(xiàn)lashCS3的腳本語言升級(jí)為ActionScript 3.0 ,同時(shí)兼容ActionScript 2.0 。與Flash相似,SWiSH也擁有功能強(qiáng)大的腳本語言,而且與ActionScript基本相同。SWiSHmax2的腳本語言基本與ActionScript 2.0等同。下面,我們就SWiSHmax2的腳本語言與FlashCS3的腳本語言進(jìn)行對(duì)比分析。
2 兩種腳本語言基本相同,絕大部分內(nèi)容完全一致
1) ActionScript遵循ECMA-262標(biāo)準(zhǔn),屬于ECMAScript,是面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)語言,其語法規(guī)則和風(fēng)格非常接近于JavaScript。SWiSH產(chǎn)生來源于Flash,SWiSH的腳本語言也來源于Flash的腳本語言ActionScript,也就是說,SWiSH腳本語言的語法規(guī)則和風(fēng)格也非常接近于JavaScript。
2) 象一般面向?qū)ο蟮木幊蹋∣OP)語言一樣,兩種腳本語言都具有對(duì)象、實(shí)例、類成員和接口。都具有繼承性、封裝性、多態(tài)性。
3) 兩種腳本語言都主要面向“幀(Frame)”對(duì)象和“影片剪輯(Movie Clip)” 對(duì)象編程。
4) 在Flash和SWiSH編程過程中都可調(diào)用外部腳本文件,所使用的方法一樣,通過#include語句調(diào)用。
5) 兩種腳本語言的語法規(guī)則、保留字、操作符、函數(shù)、語句、對(duì)象、類等等基本相同。
6) Flash和SWiSH編寫腳本的方式方法基本一致。Flash里有動(dòng)作面板和編程助手,SWiSHmax2里有完全相似的腳本面板和編程助手(協(xié)助面板)。兩者編程的基本方法都是通過面板添加腳本,甚至用戶可以在完全不懂腳本語言的情況下編寫腳本。也可以在專家模式下直接在腳本窗口輸入腳本代碼。
3 SWiSH腳本語言相比Flash腳本語言也有創(chuàng)新特點(diǎn)
SWiSH和Flash之間有版本對(duì)應(yīng)關(guān)系,SWiSH落后于Flash的版本。 SWiSHmax2對(duì)應(yīng)于FlashMX,落后Flash CS3三個(gè)版本。SWiSHmax2腳本語言與Flash CS3腳本語言本身就有版本上的差異。
SWiSHmax2之前版本明確稱其腳本語言為SWiSHScript, SWiSHmax2沒有明確其腳本語言的名稱,但在它的腳本行中卻有<%SWISHSCRIPT%>的標(biāo)識(shí),并且明確稱其腳本語言類似于ActionScript。雖然,SWiSHmax2腳本語言整體上弱于Flash CS3的腳本語言,但它也許多創(chuàng)新的特點(diǎn),有的甚至是對(duì)ActionScript的擴(kuò)展與增強(qiáng)。主要表現(xiàn)在以下方面:
1) SWiSHmax2的腳本語言的創(chuàng)新特點(diǎn)首先表現(xiàn)在與其之前版本腳本語言的進(jìn)步。如:以前版本的SWiSH假設(shè)用到?jīng)]有定義過的變量,則會(huì)出現(xiàn)不可預(yù)知的問題,SWiSHmax2則能給出一個(gè)錯(cuò)誤信息,如:"cannot find _loadXXXXXXXX".這種情況常在從一個(gè)swf文件調(diào)用另一個(gè)swf文件時(shí)出現(xiàn)。
2) eval()函數(shù)的使用,以前SWiSH腳本中可以簡化為:(objname)._x,現(xiàn)在SWiSHmax2腳本中要嚴(yán)格為:eval(objname)._x。
3) 對(duì)保留字的限制與輸出的級(jí)別無關(guān),例如:Date在SWF5之后是保留字,如果使用了Date作為變量名,即使選擇輸出SWF4,也一樣要顯示錯(cuò)誤。
4) 編程對(duì)象進(jìn)一步擴(kuò)展,SWiSHmax2可以將簡單的形狀(Shape)和文本(Text)作為編程對(duì)象。這是對(duì)ActionScript編程對(duì)象的擴(kuò)展。
5) 變量與字符串的轉(zhuǎn)換不同:變量用來存儲(chǔ)數(shù)字和字符串,根據(jù)腳本中上下文的意義,可以確定所存儲(chǔ)的是數(shù)字還是字符串,并且是否需要轉(zhuǎn)換。操作符+, <, <=, ==, !=, => 和 >,可以將數(shù)字、字符串或變量作為操作數(shù)。在SWF4中,變量被假設(shè)為數(shù)字,并且自動(dòng)進(jìn)行適當(dāng)?shù)霓D(zhuǎn)換。在SWF5及其之后中,都按真實(shí)的值存儲(chǔ)變量。操作符“+”具有字符串優(yōu)先性質(zhì),操作符“<, <=, ==, !=, => 和 >”則有數(shù)字優(yōu)先性質(zhì),而操作符“add, lt, le, eq, ne, ge, gt”則假設(shè)變量是字符串并具有字符串優(yōu)先性質(zhì)。這些轉(zhuǎn)換命令通過腳本中<%SWISHSCRIPT%>行來體現(xiàn)。
6) 物理特性:SWiSHmax2的擴(kuò)展了對(duì)象或影片剪輯的屬性,增加了物理特性:速度、加速度和阻力。用戶可以為對(duì)象或影片剪輯定義這些物理屬性。這是SWiSH腳本語言的創(chuàng)新。
7) SWiSHmax2之前版本,都是使用“精靈(Sprite)”這一術(shù)語,SWiSHmax2開始使用與相同的術(shù)語——影片剪輯(Movie Clip),為了與以前的兼容性,在SWiSHmax2腳本中仍然支持以前的Sprite對(duì)象。但Sprite并不能支持所有的Movie Clip對(duì)象的屬性和方法。
4 Flash腳本語言中有SWiSH無可比擬的功能特點(diǎn)
4.1 ActionScript 3.0相對(duì)ActionScript2.0的功能增強(qiáng)和提高
由于FlashCS3可以支持兩種腳本語言,即:ActionScript2.0和 ActionScript 3.0。所以Flash CS3腳本語言相對(duì)SWiSHmax2腳本語言優(yōu)越性首先是ActionScript 3.0相對(duì)ActionScript2.0的功能增強(qiáng)和提高。ActionScript 3.0 的腳本編寫功能超越了 ActionScript 的早期版本。主要表現(xiàn)在:ActionScript 3.0更方便創(chuàng)建擁有大型數(shù)據(jù)集和面向?qū)ο蟮目芍赜么a庫的高度復(fù)雜應(yīng)用程序。雖然 ActionScript 3.0 對(duì)于在 Adobe Flash Player 9 中運(yùn)行的內(nèi)容并不是必需的,但它使用新型的虛擬機(jī) AVM2 實(shí)現(xiàn)了性能的改善。ActionScript 3.0 代碼的執(zhí)行速度可以比以前ActionScript 代碼快 10 倍。
舊版本的 ActionScript 虛擬機(jī) AVM1 執(zhí)行 ActionScript 1.0 和 ActionScript 2.0 代碼。為了向后兼容現(xiàn)有內(nèi)容和原先內(nèi)容,F(xiàn)lash Player 9 仍支持 AVM1。
雖然 ActionScript3.0 包含了ActionScript 1.0 和 ActionScript 2.0的許多類和功能,但 ActionScript 3.0 在架構(gòu)和概念上與之前的 ActionScript 版本是有較大區(qū)別的。
ActionScript 3.0的改進(jìn)主要分為兩部分,一是新增的核心語言功能,二是改進(jìn)的 Flash Player API能夠更好地控制低級(jí)對(duì)象。
新增的核心語言功能包括:1) 針對(duì)運(yùn)行時(shí)的異常錯(cuò)誤的情形比原來多;2) 類型信息在運(yùn)行時(shí)保留,并可用于多種目的;3) 引入了密封類的概念;4) 使閉包方法可以自動(dòng)記起它的原始對(duì)象實(shí)例;5) 實(shí)現(xiàn)了 ECMAScript for XML (E4X);6) 實(shí)現(xiàn)了對(duì)正則表達(dá)式的支持;7) 命名空間使用統(tǒng)一資源標(biāo)識(shí)符 (URI);8)包含 int 和 uint 兩種類型,改變了原來單一數(shù)值類型 Number。
改進(jìn)的Flash Player API 功能包括:1) 應(yīng)用DOM3 事件模型,提供了一種生成并處理事件消息的標(biāo)準(zhǔn)方法;2) 新增用于訪問 Flash Player 顯示列表的 API;3) 處理動(dòng)態(tài)數(shù)據(jù)和內(nèi)容;4)各種 API 提供了對(duì)數(shù)據(jù)的低級(jí)訪問;包含一個(gè)用于所有與文本相關(guān)的 API 的 flash.text 包。
4.2 濾鏡的使用
FlashCS3在用戶界面狀態(tài)即可使用7個(gè)濾鏡(投影,模糊,發(fā)光,斜角,漸變發(fā)光,漸變斜角,漸變顏色),另外2個(gè)濾鏡(ConvolutionFilter,DisplacementMapFilter)只有通過ActionScript代碼來使用。SWiSHmax2也使用SWF8(FlashPlayer8及之后的播放器所支持的濾鏡)濾鏡,也是9個(gè),它們是:BevelFilter,BlurFilter,ColorMatrixFilter,ConvolutionFilter,DisplacementMapFilter,DropShadowFilter,GlowFilter,GradientBevelFilter,GradientGlowFilter。但是,它們的重要區(qū)別是:FlashCS3可以在普通文檔編輯狀態(tài)使用濾鏡,也可以通過腳本代碼使用濾鏡。而SWiSHmax2只有通過腳本代碼才能使用濾鏡。
4.3 行為面板的使用
FlashCS3具有SWiSHmax2所沒有的“行為”概念。所謂行為就是預(yù)定義的完全某些常見任務(wù)的腳本,用戶可以方便地將行為添加到 FLA 文件中的對(duì)象。 行為提供了的以下功能:幀的導(dǎo)航;加載外部 SWF 文件和 JPEG 文件;控制影片剪輯的層疊順序;影片剪輯拖動(dòng)等。
行為提供了使用戶避免編寫 ActionScript代碼的便捷途徑,也可幫助用戶了解 ActionScript 的工作方式。
行為僅對(duì) ActionScript 2.0 及更早版本可用,并且只有在“動(dòng)作”面板中工作時(shí)才可用,在外部腳本文件中工作時(shí)則不可用。通常,用戶可以在文檔中選擇一個(gè)觸發(fā)對(duì)象(如影片剪輯或按鈕),選擇“行為”面板上的“增加”,然后選擇行為。
5 揚(yáng)長避短相互補(bǔ)充,靈活運(yùn)用兩種Flash工具
通過以上分析比較可以得出結(jié)論,單純就腳本語言本身而言,F(xiàn)lashCS3明顯比SWiSHmax2高一檔次,整體功能優(yōu)越,給代碼開發(fā)者提供明顯高于SWiSHmax2的編程空間。但就開發(fā)制作Flash作品而言,許多類型的Flash作品都對(duì)腳本的依賴性很低,許多作品幾乎不需要腳本。而有著350種效果的SWiSHmax2完成這些任務(wù)能體現(xiàn)出更大的優(yōu)越性,工作效率大大提高,而且,對(duì)于大多數(shù)情況下的腳本需求,SWiSHmax2的腳本語言和SWiSHmax2所提供的編程工具也方便快捷完成。
根據(jù)實(shí)際工作中開發(fā)制作Flash作品的具體類型特點(diǎn)不同,恰當(dāng)選擇使用開發(fā)工具無疑是最佳選擇。Flash和SWiSH在使用方法的相似性和腳本語言的一致性,使同一用戶使用兩種工具進(jìn)行開發(fā)不僅可能,而且易行,兩個(gè)工具之間的轉(zhuǎn)換是平滑的。
兩種開發(fā)工具的綜合運(yùn)用可以有兩種形式:一是同一開發(fā)者根據(jù)不同作品的不同特點(diǎn)而選擇一種工具;二是同一開發(fā)者對(duì)同一個(gè)作品,根據(jù)其不同內(nèi)容、環(huán)節(jié)、功能等特點(diǎn)的不同而采用不同的工具,即:同一個(gè)作品中有的部分是用Flash開發(fā)制作的,有的部分是用SWiSH開發(fā)制作的。雖然,兩者的源文件不同(*.fla和*.swi),且不能互相導(dǎo)入,利用*.swf文件互相導(dǎo)入又完全損失了腳本信息。
同一個(gè)作品使用兩種工具開發(fā)制作的方法是:首先,將適合SWiSH制作的部分用SWiSH制作出來,輸出為*.swf文件;其次,使用SWF文件反編譯工具(選用能反編譯出腳本代碼的版本)將*.swf文件反編譯成*.fla文件;第三,將*.fla文件調(diào)入Flash完成適合Flash的部分。
參考文獻(xiàn):
[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 Users Guide[EB/OL]. http://www.swishzone.com/manuals/max2/index.html.
張六一(1961-),男,河南南陽人,高級(jí)工程師,研究方向:多媒體技術(shù)。