曾婭紅
摘要:該文以滾動字幕為例,使用AdobeDirector自帶的Lingo語言編寫了一段互動行為(Behavior),主要講述了如何編寫互動行為的內(nèi)置行為事件和定制Parameters(參數(shù))對話框。以供Lingo初學(xué)者參考。
關(guān)鍵詞:Director Lingo;互動行為;滾動字幕
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2017)17-0065-02
Adobe Director作為一款優(yōu)秀的多媒體開發(fā)工具,不僅擁有專業(yè)的編輯環(huán)境和高效的多媒體處理技術(shù),還提供了強大的交互功能。Director良好的交互性主要要體現(xiàn)在兩點:一是Diree-tor本身自帶Lingo語言,這是一種面向?qū)ο蟮木幊陶Z言,通過它可以控制舞臺(Stage)上的所有元素,實現(xiàn)多媒體的人機交互功能。二是Director提供了強大的內(nèi)置行為庫(Library),即使沒有任何編程經(jīng)驗,也能夠通過調(diào)用內(nèi)置行為庫中的行為(Be-havior),然后通過對該行為的Parameters(參數(shù))對話框進行設(shè)置,從而實現(xiàn)相應(yīng)的功能。這些行為又稱之為互動行為。
1互動行為簡介
在Director中,我們將編寫的程序代碼統(tǒng)稱為腳本(Script)。而行為(Behavior)則是Lingo腳本類型中的一種,行為腳本主要用來控制精靈和幀。在演員表(Cast)中,行為腳本的右下角有一個齒輪狀標(biāo)記,這表示它是一個行為演員。行為腳本必須拖動添加給某一精靈(Sprite)或者是某一幀(frame)才會被執(zhí)行。通常行為的編寫都是一對一的,但是在多媒體制作中,常常會碰到這樣的情況:一些精靈都擁有相似的動作,可是它們的相關(guān)屬性數(shù)值設(shè)置并不一樣,如果為每一個精靈都編寫各自的行為腳本,會使程序變得相當(dāng)臃腫,不利于調(diào)試和維護,因此,我們希望某些行為腳本在應(yīng)用到不同的精靈時,大體的程序不變,只需要進行相關(guān)變動參數(shù)的設(shè)置就可以使用了。這就是互動行為?;有袨楹推胀ㄐ袨槟_本的區(qū)別就在于:互動行為在拖動至精靈時,會彈出Parameters(參數(shù))對話框用于參數(shù)設(shè)置。在Director中,行為和互動行為都用Behavior來表示,這是因為在演員表中,它們都屬于行為演員。為了便于理解,我們將這種有參數(shù)設(shè)置的行為稱之為互動行為。
可以說,Director的這種互動行為正是它最具特色的功能之一,它使復(fù)雜的腳本模塊化,也降低了行為的使用難度。實際上,除了使用內(nèi)置行為庫中的互動行為外,我們也可以編寫自己的互動行為。
2編寫互動行為
如何編寫互動行為呢?Director提供了一個內(nèi)置行為事件getPropertyDescriptionList來定制Parameters(參數(shù))對話框,通過它我們就可以封裝行為腳本,將之改寫為互動行為。實際上除了內(nèi)置行為事件外,互動行為內(nèi)部的腳本代碼與普通的腳本并無二致。getPropertyDescriptionList也是一個函數(shù),返回一個屬性列表,該屬性列表的內(nèi)容將用于定制Parameters(參數(shù))對話框。
以制作滾動字幕為例,我們需要實現(xiàn)的動作是:使字幕從舞臺底端緩慢上升,或者是從舞臺的右邊緩慢移至右邊,當(dāng)字幕完全移出舞臺時,則運行至下一幀。
首先在Director中的演員表(Cast)導(dǎo)入需要的圖像、文本等元素,然后將之按相應(yīng)的順序拖放之分鏡表(Score)窗口中的通道中,通道中的每一個元素就是一個精靈(sprite),而我們編寫的行為腳本則是為精靈服務(wù)的。在Director右側(cè)的Behavior In-spector(行為檢視器)中添加一個新的行為,并在該行為的Script窗口中寫入如下代碼:
在這段腳本中,我們定義了一個全局變量plist,聲明了四個行為內(nèi)部屬性,并且調(diào)用了三個事件getProperty Description-List、getBehaviorDescription和beginsprite。
其中在getPropertyDescriptionList事件的屬性列表pshuxing里,定制了四項行為內(nèi)部屬性:文本的起始位置、最終位置、運動時長,沿x軸還是Y軸運動。例如:pshuxing[#xyzhou]=[#de=fault:"x",#format:#string,#comment:”沿x或Y軸運動”,#range:["X","y"]]是行為內(nèi)部屬性xyzhou的描述值,包含以下信息:
1)#default:設(shè)定屬性xyzhou的默認(rèn)值為“x”。
2)#format:設(shè)定屬性xyzhou的數(shù)據(jù)類型,#string表示是字符格式,#integer表示是整數(shù)格式,還可以設(shè)置為下列格式#float(浮點型)、#symbol(符號)、#member(所有演員名稱)、#bitmap(位圖演員列表)等等。
3)#comment:設(shè)定屬性xyzhou的描述性文字,出現(xiàn)在參數(shù)對話框中參數(shù)編輯區(qū)域的左邊,通常是對屬性的功能的解釋。
4)#range:設(shè)定屬性xyzhou的范圍,該范圍可以是一個線性表,在參數(shù)對話框中對應(yīng)的是一個下拉列表,或者是一個屬性表,從最小值到最大值:[#min:minValue,#max:maxValue],在參數(shù)對話框中對應(yīng)的是滑動條。
其中#default、#format和#comment是必須設(shè)置的,而#range是可選項。
事件getBehaviorDescription也是一個內(nèi)置行為事件,返回自定義的描述性字符串,這些字符串出現(xiàn)在Behavior Inspector(行為檢視器)的窗格底部,一般用于描述該互動行為的功能,相當(dāng)于是一個注釋,實際上它并不影響Parameters(參數(shù))對話框的定制。我們編寫該事件,只是為了增強程序的可讀性。當(dāng)編寫互動行為相對復(fù)雜時,或者程序中包含多個互動行為時,該事件就非常有用,通過行為檢視器底部的參數(shù)說明,就可以了解該行為的功能,從而方便使用。
事件beginsprite實現(xiàn)對sprite(精靈)的初始化,主要是將滾動字幕的相關(guān)參數(shù)記錄到全局變量plist中,plist是一個屬性列表,用以記錄滾動字幕的相關(guān)參數(shù),以便傳遞給下一個幀腳本。并且設(shè)定sprite的初始位置。
我們將編寫好的互動行為從演員表中拖拽到包含滾動字幕的sprite(精靈)上,則會打開如下圖1所示的參數(shù)對話框。在該對話框中設(shè)置好相應(yīng)的參數(shù),然后點擊OK。
這段腳本主要是通過全局變量D1ist得到滾動字幕的相關(guān)參數(shù),并依據(jù)時長計算包含滾動字幕的精靈(sprite)的當(dāng)前位置,當(dāng)超出限定的滾動時長后跳至下一幀。
至此,滾動字幕的腳本編寫完畢。運行程序,可以看到字幕的滾動效果。我們還可以在Behavior Inspector(行為檢視器)單擊參數(shù)按鈕,或者雙擊Behavior Inspector(行為檢視器)對話框里的互動行為,再次打開Parameters(參數(shù))對話框,對其中的參數(shù)進行修改,以達到滿意的效果。
3結(jié)束語
在Director中編寫互動行為,主要是對內(nèi)置行為事件get-PropertyDescriptionList中屬性列表的定制,因此首先要考慮的是需要設(shè)置的參數(shù)有哪些,是什么數(shù)據(jù)類型,是否有范圍限制等。然后再定義相應(yīng)的內(nèi)部屬性和參數(shù)對話框。互動行為的優(yōu)勢在于:一是提高程序的利用率,免于編寫重復(fù)代碼,也方便程序的調(diào)整修改。二是就像內(nèi)置行為庫中的互動行為一樣,也可以將自己編寫的互動行為交給不熟悉編程的人使用,他們只需要關(guān)注參數(shù)對話框的設(shè)置,而不需要關(guān)心程序是怎么編寫的。這尤其適合團隊中有不熟悉Lingo編程的多人開發(fā)模式。