福建省僑興輕工學校 吳紅霞
目前,發現許多教師對Authorware 軟件運用的非常少,制作課件僅限于PPT 或相當少的一部分人使用FLASH 軟件,究其原因,主要問題之一是流程圖式的設計給許多老師帶來了一種恐懼,就連專業老師一說到編程就搖頭,更何況是非專業老師根本就沒有接觸過編程,問題之二是多媒體軟件自身內置許多系統函數和系統變量,學習和掌握這些腳本語言的編程給許多人帶來了編程上的障礙,由此代之的是FLASH 的元件概念和時間軸的運用,但是一接觸到ActionScript 的技術問題上,同樣也是望而卻步,往往使得教學和應用上都是層面上的一些東西,為此,當遇到問題深入一些時,就給許多教師課件設計的制作帶來了許多苦惱,由此造成許多教師在這一教學環節上,對使用課件運用是能少用盡量少用,能不用就盡量不用的現象。本文針對AW 中的“移動”圖標控制對象的移動,借助內置函數SetMotionobject()和IconTitle 變量的特殊功能,實現了動態控制目標移動的問題,為讀者提供一種通用性的多對象動態控制的設計思想和方法。希望能對教師們研發精品課件的制作有其借鑒之用。
在多媒體課程教學中,我們常常都會遇到類似于一種多圖層多目標動態控制移動的問題,如果單一的“移動”圖標來實現,往往是困難重重甚至是無法實現,針對這個問題,我們通過簡單的腳本程序代碼和內置系統函數SetMotionobject()相結合的方法,實現多圖層多目標動態控制移動的問題,設計思路分兩種情況來實現,首先是實現圖片多層交互替換的功能,其次是一個移動圖標控制移動多個目標的功能。
1.圖片變層的實現、由圖1、2、3 所示,圖片變層交互控制圖片移動,其基本設計思想是:當移動第一張圖片時,可以看到第二張圖片的顯示,當移動第二張圖片時,可以看見第三張圖片的顯示,依次類推,當移動第N-1 張圖片,可以看見第N 張圖片,由圖2 移出動作所示。反過來,當第一張圖片移回動作時,是進入到N 張圖片的下面,見圖3 移回動作所示,這類問題的解決,就牽涉到每張圖片的變層的設計問題。本程序利用函數INT 和系統變量IconTitle 結合,讀取圖片圖層的序號,通過腳本代碼的計算,完成圖片變層的計算功能。

圖1 原始位置

圖2 移出動作

圖3 移回動作
2.動態控制多目標移動的實現。動態控制移動對象,其程序設計的基本思想是:當鼠標在圖片1 上,單擊此圖片1,圖片1 做出移出和移回的兩個移動動作,以此類推,當單擊第N 個圖片時,圖片N 作出移出和移回的兩個移動動作,可以看出,若我們有N 張圖片,要用2N 個“移動”動作來完成圖片的移動,這給程序的設上帶來了一定的難度,其原因是,一方面無法實現程序設計上的可通用性,另一方面程序設計流程顯得復雜和繁瑣,加上每張圖片都由兩個動作完成,如果我們控制N 張圖片的移動,就有2N 次移動來實現整個程序的完成,顯然,我們可以看出,如果N=100,那么就有200 個“移動”圖標,這是在程序設計上也是不可能的,為此,我們需要借助Authorware 內置的系統函數SetMotionobject()來實現一個移動圖片控制多個對象的功能,其動態設置移動對象的系統函數格式如下:
SetMotionobject(IconID@“Motion”,IconID@“Object”)
該函數為當前運動圖標設置運動物體,可在運行和設計時工作,其Motion 是指定運動圖標的標題, Object 是指定被移動物體所在顯示圖標的標題。從而達到更換移動對象的目地。
總之,控制圖層變換和控制移動都是在動態控制移動中一次變更完成的,而單擊動作的對象控制只需設置一個熱區即可,最后,還需要對移動完成的對象進行擦除處理。其程序設計流程如圖4 所示。

圖4 設計流程
程序設計流程如圖4 所示。程序功能說明和解釋:
從流程圖上,顯然我們看出,圖片群組圖標中有17 張圖片,而動作移動的交互控制是利用熱區進行交互控制的,而yd 和yd2是負責更換移動目標的移動,分別控制移動彈出和移動收回,擦除圖標是負責移動圖標的擦除,整個流程簡單明了,實現動態控制移動目標的作用。
流程說明:
1.窗口大小計算圖標是對演示窗口的設置;腳本代碼如下:ResizeWindow(750,450)
2.設置初始值計算圖標是對下面程序控制的初始值:腳本代碼如下:
layer1:=22
每逢農歷二月初二前后,便是廿四節氣之一的驚蟄,微微細雨伴隨著滾滾春雷潤澤大地,神龍睜開眼,抬起頭,世間都蘇醒了。在那天,古人們多會舉辦賽龍舟活動,焚香水畔,以祭龍神,民言:二月二,龍抬頭。
num:=1
num1:=MOD(num,17)+1
其中:layer1 是表示圖片的總的層數,而num 和num1 變量是負責完成交互控制移動次數的判斷。
3.面板顯示圖標僅僅是顯示文字專用的圖片,如圖1 中右邊的圖片。
4.圖片組群組圖標,僅僅存放17 張圖片的顯示圖標,分別命名為:h1,h2,…,h17。
5.交互圖標的附屬計算圖標,腳本語句如下:if num>18 then
num:=1
num1:=MOD(num,17)+1 end if
主要是累計交互計算判斷而用,當num=18 時,退出交互控制。
6.移動圖片群組圖標放了三個圖標,兩個移動圖標和一個擦除圖標,主要用于yd 移動彈出、yd2 移動收回和擦除移動對象,如圖4 中右邊的流程線。其三個圖標的腳本語句如下:
第一個yd 的附屬計算圖標中的腳本代碼:x:=585 y:=257
SetMotionObject(@"yd", @("h"^num))
其移動圖標層的屬性設置為:layer1-INT(IconTitle)第二個yd2 的附屬計算圖標中的腳本代碼:x1:=320 y1:=257
SetMotionObject(@"yd2", @("h"^num))
其移動圖標層的屬性設置為: INT(IconTitle)+1
擦除計算圖標中的腳本代碼:EraseIcon(IconID@("h"^num))num:=num+1
num1:=MOD(num,17)+1
整個程序控制非常簡單明了,讀者只需按照流程和腳本語句代碼,即可實現變層多對象動態移動控制的功能。
對于上面的程序我們可根據實際情況,做相應的變通或改進,比如,當我們所要控制的圖片太多時,都放在群組圖標中會造成程序容量的增大,不易靈活的更改圖片。因此,可以采用讀取外部文件數據圖片進行控制,由于篇幅所限,留給讀者自行研究。
總之,利用圖標和流程線來實現程序結構的設計和基本功能,再通過系統函數和腳本語言完成復雜的編程設計,這種設計往往可以使得課件程序異常的簡潔和高效,這種課件設計上的一種變通解決問題的方法,也恰恰是我們所要學習的程序設計的思想與方法。
[1]袁海東.深入Authorware7.0編程[M].北京:電子工業出版社,2004.04
[2]畢廣吉.Authorware多媒體開發程序設計與典型實例[M].北京:人民郵電出版社 ,2004.07