福建省僑興輕工學(xué)校 吳紅霞
目前,發(fā)現(xiàn)許多教師對Authorware 軟件運用的非常少,制作課件僅限于PPT 或相當(dāng)少的一部分人使用FLASH 軟件,究其原因,主要問題之一是流程圖式的設(shè)計給許多老師帶來了一種恐懼,就連專業(yè)老師一說到編程就搖頭,更何況是非專業(yè)老師根本就沒有接觸過編程,問題之二是多媒體軟件自身內(nèi)置許多系統(tǒng)函數(shù)和系統(tǒng)變量,學(xué)習(xí)和掌握這些腳本語言的編程給許多人帶來了編程上的障礙,由此代之的是FLASH 的元件概念和時間軸的運用,但是一接觸到ActionScript 的技術(shù)問題上,同樣也是望而卻步,往往使得教學(xué)和應(yīng)用上都是層面上的一些東西,為此,當(dāng)遇到問題深入一些時,就給許多教師課件設(shè)計的制作帶來了許多苦惱,由此造成許多教師在這一教學(xué)環(huán)節(jié)上,對使用課件運用是能少用盡量少用,能不用就盡量不用的現(xiàn)象。本文針對AW 中的“移動”圖標(biāo)控制對象的移動,借助內(nèi)置函數(shù)SetMotionobject()和IconTitle 變量的特殊功能,實現(xiàn)了動態(tài)控制目標(biāo)移動的問題,為讀者提供一種通用性的多對象動態(tài)控制的設(shè)計思想和方法。希望能對教師們研發(fā)精品課件的制作有其借鑒之用。
在多媒體課程教學(xué)中,我們常常都會遇到類似于一種多圖層多目標(biāo)動態(tài)控制移動的問題,如果單一的“移動”圖標(biāo)來實現(xiàn),往往是困難重重甚至是無法實現(xiàn),針對這個問題,我們通過簡單的腳本程序代碼和內(nèi)置系統(tǒng)函數(shù)SetMotionobject()相結(jié)合的方法,實現(xiàn)多圖層多目標(biāo)動態(tài)控制移動的問題,設(shè)計思路分兩種情況來實現(xiàn),首先是實現(xiàn)圖片多層交互替換的功能,其次是一個移動圖標(biāo)控制移動多個目標(biāo)的功能。
1.圖片變層的實現(xiàn)、由圖1、2、3 所示,圖片變層交互控制圖片移動,其基本設(shè)計思想是:當(dāng)移動第一張圖片時,可以看到第二張圖片的顯示,當(dāng)移動第二張圖片時,可以看見第三張圖片的顯示,依次類推,當(dāng)移動第N-1 張圖片,可以看見第N 張圖片,由圖2 移出動作所示。反過來,當(dāng)?shù)谝粡垐D片移回動作時,是進(jìn)入到N 張圖片的下面,見圖3 移回動作所示,這類問題的解決,就牽涉到每張圖片的變層的設(shè)計問題。本程序利用函數(shù)INT 和系統(tǒng)變量IconTitle 結(jié)合,讀取圖片圖層的序號,通過腳本代碼的計算,完成圖片變層的計算功能。
圖1 原始位置
圖2 移出動作
圖3 移回動作
2.動態(tài)控制多目標(biāo)移動的實現(xiàn)。動態(tài)控制移動對象,其程序設(shè)計的基本思想是:當(dāng)鼠標(biāo)在圖片1 上,單擊此圖片1,圖片1 做出移出和移回的兩個移動動作,以此類推,當(dāng)單擊第N 個圖片時,圖片N 作出移出和移回的兩個移動動作,可以看出,若我們有N 張圖片,要用2N 個“移動”動作來完成圖片的移動,這給程序的設(shè)上帶來了一定的難度,其原因是,一方面無法實現(xiàn)程序設(shè)計上的可通用性,另一方面程序設(shè)計流程顯得復(fù)雜和繁瑣,加上每張圖片都由兩個動作完成,如果我們控制N 張圖片的移動,就有2N 次移動來實現(xiàn)整個程序的完成,顯然,我們可以看出,如果N=100,那么就有200 個“移動”圖標(biāo),這是在程序設(shè)計上也是不可能的,為此,我們需要借助Authorware 內(nèi)置的系統(tǒng)函數(shù)SetMotionobject()來實現(xiàn)一個移動圖片控制多個對象的功能,其動態(tài)設(shè)置移動對象的系統(tǒng)函數(shù)格式如下:
SetMotionobject(IconID@“Motion”,IconID@“Object”)
該函數(shù)為當(dāng)前運動圖標(biāo)設(shè)置運動物體,可在運行和設(shè)計時工作,其Motion 是指定運動圖標(biāo)的標(biāo)題, Object 是指定被移動物體所在顯示圖標(biāo)的標(biāo)題。從而達(dá)到更換移動對象的目地。
總之,控制圖層變換和控制移動都是在動態(tài)控制移動中一次變更完成的,而單擊動作的對象控制只需設(shè)置一個熱區(qū)即可,最后,還需要對移動完成的對象進(jìn)行擦除處理。其程序設(shè)計流程如圖4 所示。
圖4 設(shè)計流程
程序設(shè)計流程如圖4 所示。程序功能說明和解釋:
從流程圖上,顯然我們看出,圖片群組圖標(biāo)中有17 張圖片,而動作移動的交互控制是利用熱區(qū)進(jìn)行交互控制的,而yd 和yd2是負(fù)責(zé)更換移動目標(biāo)的移動,分別控制移動彈出和移動收回,擦除圖標(biāo)是負(fù)責(zé)移動圖標(biāo)的擦除,整個流程簡單明了,實現(xiàn)動態(tài)控制移動目標(biāo)的作用。
流程說明:
1.窗口大小計算圖標(biāo)是對演示窗口的設(shè)置;腳本代碼如下:ResizeWindow(750,450)
2.設(shè)置初始值計算圖標(biāo)是對下面程序控制的初始值:腳本代碼如下:
layer1:=22
每逢農(nóng)歷二月初二前后,便是廿四節(jié)氣之一的驚蟄,微微細(xì)雨伴隨著滾滾春雷潤澤大地,神龍睜開眼,抬起頭,世間都蘇醒了。在那天,古人們多會舉辦賽龍舟活動,焚香水畔,以祭龍神,民言:二月二,龍?zhí)ь^。
num:=1
num1:=MOD(num,17)+1
其中:layer1 是表示圖片的總的層數(shù),而num 和num1 變量是負(fù)責(zé)完成交互控制移動次數(shù)的判斷。
3.面板顯示圖標(biāo)僅僅是顯示文字專用的圖片,如圖1 中右邊的圖片。
4.圖片組群組圖標(biāo),僅僅存放17 張圖片的顯示圖標(biāo),分別命名為:h1,h2,…,h17。
5.交互圖標(biāo)的附屬計算圖標(biāo),腳本語句如下:if num>18 then
num:=1
num1:=MOD(num,17)+1 end if
主要是累計交互計算判斷而用,當(dāng)num=18 時,退出交互控制。
6.移動圖片群組圖標(biāo)放了三個圖標(biāo),兩個移動圖標(biāo)和一個擦除圖標(biāo),主要用于yd 移動彈出、yd2 移動收回和擦除移動對象,如圖4 中右邊的流程線。其三個圖標(biāo)的腳本語句如下:
第一個yd 的附屬計算圖標(biāo)中的腳本代碼:x:=585 y:=257
SetMotionObject(@"yd", @("h"^num))
其移動圖標(biāo)層的屬性設(shè)置為:layer1-INT(IconTitle)第二個yd2 的附屬計算圖標(biāo)中的腳本代碼:x1:=320 y1:=257
SetMotionObject(@"yd2", @("h"^num))
其移動圖標(biāo)層的屬性設(shè)置為: INT(IconTitle)+1
擦除計算圖標(biāo)中的腳本代碼:EraseIcon(IconID@("h"^num))num:=num+1
num1:=MOD(num,17)+1
整個程序控制非常簡單明了,讀者只需按照流程和腳本語句代碼,即可實現(xiàn)變層多對象動態(tài)移動控制的功能。
對于上面的程序我們可根據(jù)實際情況,做相應(yīng)的變通或改進(jìn),比如,當(dāng)我們所要控制的圖片太多時,都放在群組圖標(biāo)中會造成程序容量的增大,不易靈活的更改圖片。因此,可以采用讀取外部文件數(shù)據(jù)圖片進(jìn)行控制,由于篇幅所限,留給讀者自行研究。
總之,利用圖標(biāo)和流程線來實現(xiàn)程序結(jié)構(gòu)的設(shè)計和基本功能,再通過系統(tǒng)函數(shù)和腳本語言完成復(fù)雜的編程設(shè)計,這種設(shè)計往往可以使得課件程序異常的簡潔和高效,這種課件設(shè)計上的一種變通解決問題的方法,也恰恰是我們所要學(xué)習(xí)的程序設(shè)計的思想與方法。
[1]袁海東.深入Authorware7.0編程[M].北京:電子工業(yè)出版社,2004.04
[2]畢廣吉.Authorware多媒體開發(fā)程序設(shè)計與典型實例[M].北京:人民郵電出版社 ,2004.07