形象化的多媒體軟體主呼叫程式設計 (轉)

worldblog發表於2007-12-05
形象化的多媒體軟體主呼叫程式設計 (轉)[@more@]


形象化的多主設計
蔡 菁 武漢交通科技大學
一個較大的軟體通常分成若干模組,然後透過主呼叫程式從外部呼叫整合。直接使用一些呼叫,可以做出一個非常簡單的呼叫程式,但無法達到生動、有趣、形象的效果,而這些特性卻是多媒體軟體應該必備的。Authorware是廣泛應用的多媒體軟體創作工具。本文將介紹如何充分運用Authorware的動畫及互動功能設計出比單純的文字或圖形更具說服力的主呼叫程式。

1. 主呼叫程式的構想
假定用Authorware 設計某課程的多媒體學習軟體,該課程包括十大單元的學習,其主呼叫介面如圖1所示。
首先將圖1中間的一整幅地圖分割為十個部分,每部分圖象的位置狀態反映一個單元的學習呼叫情況。系統執行之後,如果某部分圖象被移動分散出去則說明對應於該圖象的單元還沒有學習完畢;如果仍就居於地圖的原位置則說明該單元已經學習完了;如果被分散出去的圖象部分經過學習重新又回到中間地圖的原位置,則表示本次學習完成了該單元的學習。
系統初次執行時,圖1的介面顯示停留一會後,分割的地圖的十幅圖象便四散開來,分別移動到相應的單元目錄上,主呼叫介面變化成圖2的樣式。說明初次使用該學習系統,每個單元都還沒有學習過。
若完成某個單元的學習,其對應的那部分圖象便會自動回到地圖中的原來位置。假定現在已完成了第一、第四、第七、第十個單元的學習,主呼叫介面就變化成圖3的樣式。並且即使退出系統下次重新進入系統繼續學習,主呼叫介面依然呈現出圖3的樣式,只有那些沒有學習的單元所對應的圖象這次才會分散移動到相應的單元目錄上,已經學習過的單元對應的圖象則不會移動,這樣就便於使用者瞭解哪些內容學習過,哪些內容還沒有學習。當完成所有內容的學習,則分散的地圖又重新拼成一幅完整的圖形,回到圖1樣式的主呼叫介面。

2. 主呼叫程式的設計
根據前面的構思,主呼叫程式的程式流程如圖4所示。從功能上來說主要包括四大部分,即頁面佈置、圖形分散、程式呼叫和圖形聚合。
下面對此程式的設計過程作一簡要介紹。
1. 設定背景:拖動一個[顯示]圖示到流程線上,命名為“background",雙擊開啟,引入底圖,此圖為整個程式執行時的背景,如圖1中的海水底圖。

2. 佈置桌面按鈕:拖動一個[對映]圖示到流程線上,命名為“button",在其內層再透過一組[顯示]圖示引入需在桌面上佈置的按鈕樣式。

3. 分割圖形:拖動一個[對映]圖示到流程線上,命名為“part", 在其內層再透過加入一組[顯示]圖示將分割好的圖形的各個部分引入。

至此,頁面佈置的工作完成。

4. 拖動一個[運算]設計圖示到流程線上,命名為“read text", 雙擊開啟,加入相應程式碼,參見圖5 。用意是讀入外部存檔save.txt,其形式參見圖6所示,從第一到第十每個單元各佔據一行,分別用save1~save10是=0還是=1儲存了每一單元是否學習完畢的資訊,初值都為0,表示都未學習過。根據外部存檔檔案的有關資訊對系統的相應變數賦值,以便下面判定需要將哪一部分圖象分散開去,以便後面在每個單元學習結束時判定是否需要進行圖象的聚合。變數save11~save101分別記錄上一次進入系統時,即本次學習之前從第一到第十每個單元是否學習完畢的資訊,例如,若save21=1 則說明第二個單元已經學習過了。

5. 拖動一個[對映]圖示到流程線上。命名為“move1",其作用為根據代表每一單元學習情況的相應變數的狀態,將未學習單元相應的圖象部分分散開來。在其內層對每一學習單元加入一[運算]圖示(設定參見圖7),及一[移動]圖示(設定參見圖8)。在[運算]圖示內判斷代表本單元學習情況的相應變數的值是否為1。若為1,表示本單元已經學習完畢,其相應的圖象部分不需要做任何移動,因而轉去對下一單元繼續進行相應判斷的圖示;若不為1,表示本單元還沒有學習完畢,則順序執行[移動],即將本單元相應的圖象部分分散出去;

至此,圖形分散的工作完成。

6. 在流程線上放置一[互動作用]按鈕,命名為“interaction”。在“interaction”右側放置一系列[對映]設計圖示。完成對第二步“button”圖示中所設定的桌面各按鈕的響應,實現對各單元學習內容的呼叫。[Response Type]可設為[Hot spot]或其他適合的方式。在各學習單元的對映圖示內層,可設定新的桌面按鈕顯示樣式,並透過一[運算]圖示,使用JumpFileReturn()函式跳轉到相應學習單元對應的檔案去執行,實現呼叫分程式的功能。
當退出對該檔案的執行,即從各單元的學習回到主呼叫程式時,必須經歷一[運算]圖示,完成退出的工作,其程式碼參見圖9,若本單元學習完畢,則讀入外部存檔檔案save.txt,並修改對應於本單元的相應資訊,例如第二單元若學習完畢,則將檔案save.txt的第二行修改為“save2=1”,然後將相應資訊寫回檔案save.txt,最後呼叫函式Quit(0)返回主呼叫程式。

至此,程式呼叫的工作完成。

7. 拖動一[運算]設計圖示到流程線上。命名為“2read text", 雙擊開啟,加入相應程式碼,參見圖10 。重新讀入外部存檔檔案save.txt,根據其每一行的當前資訊對系統的相應變數賦值,因為使用者的學習情況可能不斷髮生新的變化,過程6中可能對外部存檔檔案save.txt的某些資訊作了改變,變數save1~save10分別記錄從第一到第十每個單元當前的學習資訊,後面的程式需要根據新的資訊,隨時動態調整分散的圖象,將已學習的相應部分聚合。

8. 拖動一個[對映]圖示到流程線上。命名為“move2",其作用為根據代表每一單元學習情況的相應變數的狀態,將本次學習完畢的單元相應的圖象部分重新聚合起來。在其內層對每一學習單元加入一[運算]圖示(參見圖11),及一[移動]圖示(參見圖8)。在[運算]圖示內,判斷是否以前已學習“save11”和是否在本次學習“save1”兩標誌變數。若save11=1則表示以前已學習過本單元,則在系統進入圖形分散的過程中根本就不會分散,因為只有未學習的單元的圖象部分才會分散出去,所以就用不著再聚合起來;若save1<>1則表示本單元還沒有學習完畢,也用不著聚合,所以以上兩種情況都用不著聚合,即都用不著執行[移動],只需轉去執行對下一單元進行相應判斷的圖示。

至此,圖形聚合的工作完成。

9. 拖動一個[運算]設計圖示到流程線上。命名為“end”, 雙擊開啟,加入如下程式碼 :GoTo(IconID@"interaction"),其作用是返回到互動響應圖示,等待使用者進行新的學習選擇。

主呼叫程式的設計也隨之完成。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988610/,如需轉載,請註明出處,否則將追究法律責任。

相關文章