authorware提供的系統函數
authorware提供的變量是用來存儲模塊信息,authorware所提供的函數是用來完成特定的任務。
函數使用的位置是:
1.【運算】設計按鈕的對話框中。
2.作為設計按鈕的裝飾。
3. 用于對話框的相關項的設置。
通過使用authorware所提供的系統函數,讀者可以設計基于終端用戶交互時獲取的信息來進行判斷調用的程序模塊。這樣,在終端用戶和計算機之間便形成了人機的對話的環境。
使用【window】菜單中的【functions】命令選項(快捷鍵為ctrl+shift+f),彈出圖6-32所示的authorware的【function】函數對話框。該對話框中的相關內容在下面我們將系統地學習。
圖6-32 【functions】函數對話框
(1)【category】:函數類型列表:在該下拉列表(如圖6-33)中是authorware所提供的系統函數和讀者自定義的函數類型的列表。
authorware函數分為19種類型,讀者在使用函數時,最好能知道函數所屬的類,如果能知道函數所屬的類。則我們可以快捷地使用函數類型列表,從該類函數的函數名列表中我們可以迅速地尋找到所需的authorware函數的位置。
下面請讀者來學習autorware提供的所有系統函數的類型:
a.【character】:字符管理函數:這些authorware所提供的函數主要是用來處理文本內容及字符串的處理。
b.【file】:文件管理函數:這些authorware所提供的函數能使讀者可以方便地創建和維護外部文件。
c.【framework】:框架管理函數:這些函數使讀者可以實現在框架結構內部的某些特定功能,例如在框架結構內實施一個對某一關鍵詞的查找等特定功能。
d.【general】:一般目的函數:這些函數執行一些系統普通級的任務。例如刪除一個顯示對象,播放媒體信息等等。
e.【graphic】:繪圖函數:這些函數決定顯示的對象如何在展示窗口中顯示。例如在展示窗口畫方框或圓。并為方框或圓設置填充模式和顏色。
f.【icons】:設計按鈕管理函數:利用這些函數來管理流程線上的設計按鈕。例如使用這類函數顯示或刪除設計按鈕或在一個【顯示】設計按鈕中改變一個顯示對象所處的層級別。
g.【jump】:跳轉控制函數:跳轉函數不僅能夠從一個設計按鈕跳轉到另一個設計按鈕中,而且還能夠跳轉到一個外部文件中。例如我們可以設置:當最終用戶在一定時間內沒有反應時,authorware程序跳轉去執行某一特殊的設計按鈕中的內容,或跳轉執行某一特定的外部程序模塊,以便實現特殊的自動演示功能。
h.【language】:編程語言函數: authorware提供的這些函數用來執行特殊的語言編程操作。例如if-then 語句、repeat while等語句。
i.【list】:列表函數(該類函數是autorware4.0新增的函數類型):使用該類函數,可以對相關對象按照一定的規則排序,或按照特定的規則建立索引。
j.【math】:數學運算函數:這些函數能完成復雜的數學運算,從簡單的加法到隨機數的生成。autorware可以執行大多數我們所需要的數學運算。
k.【network】:網絡管理函數:對于要在國際互聯網上運行的模塊,我們使用這類函數來實現某些特定的功能。例如:訪問外部文件,或從網絡上下載內容到本地硬盤上,都是通過使用該類函數來實現的。
l.【ole】:ole管理函數:ole處理函數用來處理展示窗口中的ole對象。authorware 4.0支持所有標準的ole通信。
m.【platform】:平臺管理函數: 平臺管理函數用來獲取以后xcmds或dll要使用的信息。例如一個平臺函數將返回發生器類型,以便確定authorware當前是否在執行應用程序。
n.【time】:時間管理函數:該類函數根據不同的規則將日期轉化為數字格式,方便我們的程序設計中對日期的比較,或者顯示系統的日期和時間。
o.【video】:視頻管理函數:該類函數用來管理程序設計中引入的視頻,包括視頻的播放、暫停、尋找特定幀等等對視頻內容進行操作的特殊功能。該類函數詳細使用方法參見【視頻的引入】中視頻函數的使用。
p.【xtras】:xtras函數:該類函數可以控制和使用xtras文件,或者獲取xtras文件的相關信息。
q.【xtra activex】:activex控件函數;
r.【xtra fileio】:xtra文件輸入輸出控制函數。
除了上面我們學習的19大類函數外,還有其它兩個選項:
①【all】全部:選擇該選項,則在函數名列表中按照字母順序顯示authorware所提供的所有的系統函數的名稱。
②定制:定制函數類型列表是以讀者所開發的程序模塊文件名為標志。選擇該類型選項,在函數名列表中將顯示所有用戶自己創建的和使用的xcms(macintosh)或dll(windows)生成的所有函數。
(2) 函數名列表:一旦讀者選定了某種函數類型,則在類型菜單下面的列表框中的內容就變成該類函數的所有函數名的列表。讀者可以在該顯示框中選擇函數,單擊一個函數名,【functions】函數對話框中的相關內容會相應改變。
(3) 【referenced by】:引用:一旦讀者選定了函數后,在引用區域顯示框中將顯示所有使用該函數的設計按鈕。
(4) 【show icon】:顯示設計按鈕命令按鈕:單擊該命令按鈕,使用讀者所選中函數的設計按鈕在流程線上高亮顯示。
提示:
雙擊函數名列表中的該函數,可以達到同顯示設計按鈕命令按鈕相同的功能。
(5) 【description】:描述窗口:在該窗口中具體描述了函數的語法規則和參數含義,為讀者使用該函數提供了詳細的步驟。
(6) 【load】命令按鈕:單擊該命令按鈕,使讀者可以定位及輸入外部函數。這些外部函數可以是cms(macintosh)、dll或ucd(windows),或者其它包含用戶自行設計的代碼的應用程序。
(7) 【rename】命令按鈕:使用該命令按鈕,讀者可以修改在函數名列表中選擇的函數。
注意:
對于authorware所提供的系統函數來說,該命令按鈕無效,該命令按鈕只能修改用戶自定義的函數。
(8) 【unload】:卸載命令按鈕:當一個用戶自定義的函數在程序模塊中的任何一個地方都不再使用時,讀者可以卸載或刪除它,要刪除一個不再使用的自定義函數,只需在函數名列表中選擇該函數,然后單擊【delete】刪除命令按鈕來刪除該函數即可。
(9) 【paste】粘貼命令按鈕:同變量的粘貼命令按鈕相同,讀者可以使用該命令按鈕將函數名列表中選中的函數粘貼到打開的【運算】設計按鈕對話框或可以接受函數的區域或外部對象中。
當一個函數被粘貼到應用位置時,它包含了為確保函數能夠正確運行所需的所有域的占位符。
前面我們學習了authorware【functions】對話框中相關選項的含義和使用方法,在今后的學習中,我們還要使用到該對話框來實現特殊的功能。而且,在程序的調試過程中,【functions】函數對話框同【variables】變量對話框一樣,可以作為一個獨立的浮動窗口出現在windows窗口上,讀者可以隨時通過該對話框來了解自己所使用的函數語法的正確性。從而,可以加快程序的設計和調試。
函數的參數和返回值
函數是具有特殊的語法規則,用來實現特定任務的程序。所以,當我們使用一個函數時,必須要遵循正確的語法規則。在語法規則中最重要的是要正確地使用參數,函數的參數是讀者提供給函數為完成某一特定任務所需要的輸入信息。幾乎所有的系統函數都需要輸入參數。
在authorware所提供的眾多函數中,參數的使用和函數的返回值的類型有很大的差別。
1. 參數的類型
首先,讓我們來介紹一下參數的類型:
(1) 帶雙引號的參數:如果將字符串作為一個函數的一個參數,則在輸入該字符串作為參數時,必須為該字符串加上雙引號。例如函數presskey("keyname"),如果我們希望設置該按鍵為字符串enter,則我們在使用該函數的時候,要為字符串enter加上一個雙引號,使用實例為:presskey("enter");如果我們用一個變量keyname來代替字符串enter,即keyname=“enter”,則我們在使用該函數時,變量不能再加雙引號,應該設成presskey (keyname),否則authorware會錯將該變量名作為字符串對待。
(2) 任選項參數:在authorware的系統函數中,有許多函數帶有幾個參數,而在實際的使用過程中,函數的有些參數不一定每一個都必須使用,而是根據實際任務的情況選用不同的參數。例如:jumpfile("filename"[, "variable1, variable2, ...", ["folder"]])函數是一個具有任選項參數的函數。使用該函數有兩種語法規則:
jumpfile("filename")
jumpfile("filename"[, "variable1, variable2, ...", ["folder"]])
如果authorware的程序僅僅是從一個應用模塊跳轉到另一個應用模塊(如examp1.a4p)。則可以使用第一種語法,該函數設置為jumpfile(“examp1”)。如果在examp1.a4p文件中有兩個變量與variable1和variable2同名,現在要將另外兩個值(如username和userid)傳遞給這兩個參數,則可以使用第二種語法方式。該函數設置為:jumpfile("examp1", " username,userid")。
2. 函數的返回值
在authorware所提供的系統函數中,有些有返回值,而有些函數是沒有任何返回值。有返回值的函數占大多數。
例如:beep( )函數只是實現一個響鈴的功能,所以沒有任何返回值。
getline("string", n [, m, delim])函數的返回值是一個字符串。
函數的使用位置和使用方法
在【運算】設計按鈕對話框中插入函數:
圖6-34 在運算對話框中選擇插入函數的位置
在流程線上的【運算】設計按鈕對話框中我們可以插入函數,具體的步驟如下:
(1) 在【運算】設計按鈕對話框中現在要插入函數的位置,如圖6-34所示。用鼠標單擊對話框中要插入函數的位置,光標在該位置閃爍,表示處在等待插入的狀態。
(2) 使用authorware中的【window】菜單中的【functions】命令選項(快捷鍵為ctrl+shift+f),彈出authorware的【functions】函數對話框。
圖6-35 插入函數后的【運算】設計按鈕對話框
(3) 在函數類型列表中選擇要插入函數所屬的函數類型,如果不知道函數的類型,則在函數類型列表中選擇【all】選項。這里,我們選擇【all】選項。
(4) 在函數名列表中用鼠標單擊要插入的函數,使其高亮處在被選中狀態。此時,在描述區域顯示框中顯示該系統函數的語法規則和使用方法的簡單描述。在這里我們選擇“circel”函數。
(5) 單擊【paste】命令按鈕,將所選擇的函數插入到【運算】設計按鈕對話框中,插入后如圖6-35所示。
(6) 將插入后的函數中的參數用讀者所使用的變量代替。
(7) 如果讀者需要插入另外的函數,則不需要關閉【functions】函數對話框,讀者只需要重新在【運算】設計按鈕對話框中選擇新的插入位置,重復步驟(3)至(6)的操作即可。
(8) 關閉【運算】設計按鈕對話框,結束函數的插入。
注意:
關閉【運算】設計按鈕對話框后,authorware有可能會彈出新建變量對話框,這是因為讀者在設定函數的參數時,使用了新的變量,讀者需要在新建變量對話框中設置這一新的變量。
注意:函數的使用位置和方法基本上同變量的使用位置和方法,重要的是讀者要特別留意函數中各參數的使用,還要注意函數返回值的意義和在程序設計中的應用。
使用自定義函數
由于特殊任務的需要,在authorware所提供的系統函數不能滿足需求的情況下,用戶需要引入一些自己定義的函數來實現特定的任務,這些函數我們稱為authorware引入的自定義函數。
創建自定義函數有專門的介紹,在這里,我們先學習如何使用自定義函數。
在使用自定義函數之前,必須要加載這個自定義函數。之所以要加載自定義函數,目的是使authorware能知道存放該函數的地點,從而能夠直接從磁盤上讀取該函數。當一個自定義函數加載后,就可以象使用authorware所提供的系統函數一樣來使用自定義函數。因此,使用自定義函數有兩步;
(1) 加載自定義函數。
(2) 將自定義函數插入到需要使用的地方。
下面請讀者來學習這兩個使用自定義函數的步驟:
加載自定義函數:
在authorware中,可以以很多方式來加載所需要的自定義函數。綜合起來有下面三種方式。而事實上,三種方式最終都要使用【load functions】對話框,不同之處是打開【load functions】對話框的方式不同,所以事實上有兩種:
(1) 用【functions】對話框來加載自定義函數。
①使用authorware中的【window】菜單中的【functions】命令選項(快捷鍵為ctrl+shift+f),彈出如圖6-36所示的authorware的【function】函數對話框。
② 在【category:】函數類型下拉列表中選擇【untitled】選項。
③ 用鼠標單擊圖4-36所示的【load】命令按鈕,則屏幕上會彈出圖6-37所示的對話框,在此來選擇自定義函數所在的自定義函數文件。
圖6-37 定位自定義函數對話框
④ 選擇需要加載的自定義函數所在的文件,單擊【打開】命令按鈕,authorware會彈出如圖6-38所示的引入文件中所包含的自定義函數的列表。
圖6-38 自定義函數列表
⑤ 在圖6-38所示的對話框中,在左邊自定義函數列表區域中選擇要加載的函數名,則該函數的使用方法便在該對話框的【name:】顯示框中出現。單擊對話框中的【load】命令按鈕,加載所選擇的自定義函數。
提示:
在windows系統中,自定義函數文件擴展名為dll,它是一個動態連接庫中的文件。
⑥ 則讀者可以觀察到在【functions】函數對話框的函數名列表中出現圖6-39所示的自定義函數,該函數名的出現,表示我們已經將該自定義函數加載到authorware中。
圖6-39 加載自定義函數后的【functions】函數對話框
⑦ 將自定義函數插入到需要的位置的方法同系統函數的插入方法相同,讀者可以自行實踐。
(2) 在【運算】設計按鈕對話框、對話框的正文輸入框或正文顯示對象中直接加載自定義函數。步驟如下:
① 在合適的位置直接輸入自定義函數名及其參數。
② 關閉【運算】設計按鈕對話框、對話框或用于創建正文顯示對象的設計按鈕,此時,彈出圖6-37所示的【load function】定位自定義函數對話框。
③ 其它的設置方法參見(1)中的操作步驟(4)~(7)。
使用自定義函數:
當加載了一個自定義函數后,在authorware中該自定義函數的使用就完全和系統函數相同了。
提示:
如果讀者在作品中使用了自定義函數,則在最后發行該應用程序作品的時候,必須要包括存儲該自定義函數的文件。關于作品的最終打包與發行我們會在后續的實例中詳細介紹。
創建自定義函數
由于特殊任務的需要,authorware所提供的系統函數不能滿足需求的情況下,用戶需要引入一些自己定義的函數來實現特定的任務,這些函數我們可以稱為authorware引入的自定義函數。
對于所引入的自定義函數有以下兩種:
具有返回值的函數。
沒有返回值,只執行某種操作的函數,我們可以稱之為命令。
在該部分內容中我們學習下述要點:
什么時候使用自定義函數;authorware應用程序的開發過程中,使用外部的自定義函數是最后的手段。
如何創建自定義函數:自定義函數文件可以使用多種編程語言或編譯器來建立。
當引入的自定義函數不遵循authorware的約定時的處理: 當authorware認為動態連接庫(dll)并沒有遵循authorware的約定時,將在設置的過程中加入更多的步驟。
1. 什么時候使用自定義函數
使用authorware的好處是用戶不必是一個經過專門訓練的編程人員,就可以創建高級的應用程序。在實際的使用過程中,讀者會偶爾遇到authorware所不能解決的問題或不支持的功能,在不考慮對執行效果的影響和時間的需求上,我們可以求助于引入外部代碼-自定義函數來實現這些。
筆者提醒初學者,在編程過程中,要真正地抵制authorware自定義函數便利性的誘惑。新的authorware編程者由于下述的兩個原因而習慣于使用外部代碼-自定義函數。
(1) 傳統的編程背景的影響:具有傳統編程經驗的新的authorware編程者有一種依賴于他們已經知道的東西的趨勢,筆者也一樣。在authorware的編程過程中,一碰到復雜的控制、制作一個動畫等比較復雜的操作時,總是趨向于用已經知道的工具來尋求幫助,而不去仔細的研究authorware是否能實現這些功能。
(2) 忽略了authorware編程的實質:有很多編程人員只注重autorware的編程規則,而不去開發和領會authorware的編程實質,對于編程規則只是表面的使用,而不能對authorware的編程規則融會貫通,并在其規則的基礎上進行進一步的創新,實現新的功能。
不注重autorware編程的實質,一旦碰到較復雜的問題,就迅速地求助于外部的文件代碼-自定義函數來實現特定的功能。
提示:
讀者在今后程序的設計過程中,要充分利用authorware的編程規則,并在其基礎上進行創新,盡量少地使用外部代碼。盡量少地引入自定義函數。
2. 如何創建自定義函數
在該部分內容中我們將介紹創建authorware自定義函數的一些基礎知識。在這里,首先我們對在windows環境下創建自定義函數的一些基本規則向讀者簡單地介紹一下:
內容一:dll和ucd:
對于windows系統來說,自定義函數是以動態連接庫(dll)文件格式存儲的,因此,存儲自定義函數的文件和應用程序模塊是分開的,所以自定義函數文件是外部文件。在打包和最終發行作品時,必須包含使用了其函數的自定義函數文件。
盡管authorware有強大的功能,但其并不支持dll文件的編寫,如果要創建dll文件,則要借助于其它種類的編程語言來進行windows下的編程。這已超出了本書的范圍,我們就不再這里詳細介紹了。具體dll文件的創建參見其它編程語言的書籍(c、c++語言等)。
雖然我們在這里不詳細介紹dll文件的創建,但是,我們要在這里向讀者介紹創建dll文件時要注意的事項:在創建一個自定義函數的dll文件時,讀者必須在該文件中包含加載和使用一個自定義變量時所需要的特定信息:
函數存放的位置
函數名
函數的參數個數和參數類型
函數的返回值
當authorware加載一個自定義函數時,是用一個被稱為調用轉換的標準格式來顯示這些信息的。因此,在創建一個自定義函數時,必須包含上述信息,以便于authorware準確地調用函數。
在我們使用自定義函數時,通常會遇到下面兩種情況:
(1) dll符合authorware的調用轉換標準格式:authorware加載自定義函數所需的信息已經直接插入到dll中,所以當authorware選擇該dll文件后,該自定義函數就已經被直接加載到authorware中。
(2) dll不符合authorware的調用轉換標準格式:因為dll不符合authorware的調用轉換標準格式,所以必須由用戶在加載該自定義函數時手工給出自定義函數的信息,否則,當調用該自定義函數時,authorware會提示用戶輸入相關信息。提示對話框如圖6-40所示。
對于對windows編程不熟悉的用戶來說,使用dll是比較困難的。為了方便用戶的使用,authorware提供了一種對dll文件的透明方式加載(ucd)。當加載一個ucd文件時,讀者會發現一個dll文件中可以使用的函數列表,用戶只需象粘貼一個系統函數一樣,將一個想使用的自定義函數粘貼到要插入的位置。
內容二:自定義函數的創建規則:
(1) 函數名的格式:dll文件和調用它的程序模塊是相互獨立的文件,因此,在程序模塊調用dll文件時,必須指定準確的搜索路徑。在authorware中,識別一個自定義函數有三種方式。下面我們以自定義函數hotclick()(數字標識為30)為例來說明這三種識別方式:
① 自定義函數原先的函數名:hotclick:當使用這種形式時,autorware將尋找名為hotclick的函數,并用這個名稱進行加載。
② 存儲函數名的變量:hclick= hotclick:當使用該形式時,authorware尋找名為hotclick的函數,然后將它命名為hclick。
注意:
當一個自定義函數名與系統函數或已定義的自定義函數名相同時,這種形式是避免函數名沖突的有效方法。
③ 被稱為該函數原型的數字標識:hclick=@30:當使用該形式時,authorware就直接通過自定義函數的數字標識來選擇自定義函數。因此在使用hotclick自定義函數時可以用hclick來代替。
注意:
使用該方式,可以使authorware迅速地調用要使用的自定義函數,大大地提高程序執行的速度。
圖6-40 為自定義變量重新命名
提示:
加載自定義函數后,讀者可以在【functions】函數對話框中的函數名列表中看到自定義函數名,讀者可以使用該對話框中的【rename】命令按鈕來彈出圖6-40中所示的【rename function】對話框來為自定義變量重新命名。
(2) 函數參數列表的格式:用戶可以使用參數列表的形式來輸入函數的參數。如果自定義函數的參數不止一個時,參數之間要用逗號隔開。在用列表形式來輸入函數參數時,參數的數量和參數的類型必須和原型函數中所定義的內容相一致。
表6-1所示的是authorware中所有有效的參數類型。
表6-1 authorware中有效的參數類型
參數類型 | 含義 | 等效于windows編程中的參數類型 |
char | 有符號byte | char |
byte | 無符號byte | unsigned char、byte |
short | 有符號整數 | int、shoot、boot |
word | 無符號整數 | unsigned word handle |
long | 有符號整數 | long long |
dword | 無符號長整數 | dword unsigned long |
float | 浮點數 | float |
double | 雙精度型浮點數 | double |
point | 遠程指針 | far lppoint |
string | 以零結束的字符串遠程指針 |
|
void | 空函數 | void void |
表6-2 參數類型之間的轉換規則
要求的參數類型 | 整型 | 實型 | 字符串 |
char byte short word | 取最低的字節 | 轉換為整型后,再取最低字節 | 轉換為整型后,再取最低字節 |
long dword | 不變 | 轉換為有符號常整型 | 轉換為有符號常整型 |
float | 轉換為浮點型值 | 按浮點型值判斷 | 轉換為浮點型值 |
double | 轉換為雙精度浮點型值 | 不變 | 轉換成雙精度浮點型值 |
pointer | 不變 | 截斷成為符號長整型 | 轉換成指向字符串的遠程指針 |
string | 轉換為指向數值格式化字符串的遠程指針 | 轉換成指向數值格式化字符串的遠程指針 | 轉換成指向字符串的遠程指針 |
如果用戶輸入的參數類型與自定義函數中要求的參數不一致,則authorware會自動將輸入的參數類型按照表6-2中的轉換方式來進行轉換。
(3) 函數的返回格式:如表6-3所示為自定義函數的返回類型列表:
表6-3 自定義函數有效返回值類型
參數類型 | 含義 | 等效于windows編程中的參數類型 |
char | 有符號byte | char |
byte | 無符號byte | unsigned char,byte |
short | 有符號整數 | int,shoot、boot |
word | 無符號整數 | unsigned word handle |
long | 有符號整數 | long long |
dword | 無符號長整數 | dword unsigned long |
float | 浮點數 | float |
double | 雙精度型浮點數 | double |
point | 遠程指針 | far lppoint |
string | 指向以零結束的字符串 |
|
void | 無返回值 | void void |
(4) 加載不符合authorware調用轉換格式的自定義函數時的設置:當讀者在【functions】對話框中使用【load】命令按鈕來加載自定義函數時,如果dll文件的格式不符合authorware調用轉換格式的話,則authorware會自動彈出如圖6-41所示的對話框來要求用戶來輸入所加載函數的相關信息。包括如下內容:
函數名
參數名
參數列表
函數返回值
函數相關描述等信息。
在該對話框中,函數的描述是可選的輸入區域,其它的輸入區域是必須填寫的。否則自定義函數無法加載。
在【function name】正文輸入框中輸入函數名;
在【arguments:】正文輸入框中輸入參數的列表;
在【return:】正文輸入框中輸入返回值的類型;
在【description】正文輸入區域中輸入對函數的相關描述,該選項可選。
設置好該對話框后,單擊【load】命令按鈕加載自定義函數。
圖6-41 輸入自定義函數相關信息對話框
系統函數實例介紹
在authorware中,系統函數是非常重要的,利用authorware提供的系統函數,讀者可以實現某些特定的功能,并可以將各種函數相組合來實現新的功能。在該部分內容中,我們將簡單地學習部分系統函數的語法規則和使用方法。
在該部分內容中,共學習如下內容:
實現程序跳轉的系統函數;
筆者在程序設計過程中最常用的一些系統函數及其應用實例。
在利用authorware進行交互式多媒體程序設計過程中,各程序模塊之間的跳轉和調用是非常頻繁的,authorware作為一個交互式多媒體設計的平臺,為編程人員提供了大量改變程序流程的函數來實現程序的跳轉和模塊之間的調用。下面首先讓我們來學習改變程序流程的系統函數。
步驟1 改變程序流程的系統函數:
(1) goto:
作用:將程序跳轉到某設計按鈕中,執行該設計按鈕中的內容。
語法格式:goto(iconid@"icontitle")
(2) jumpfile :
作用:將程序從程序的一個模塊文件跳轉到另一個模塊文件中去執行。
語法格式:jumpfile("filename", ["variable1, variable2, ?,"folder"])
(3) jumpfilereturn :
作用:將程序從一個模塊文件跳轉到另一個模塊文件中,執行完后一個文件后返回到原文件處。
語法格式:jumpfilereturn("filename", ["variable1, variable2, ?,"folder"])
(4) jumpout:
作用:退出authorware環境,執行program參數設置的程序。
語法格式:jumpout("program", ["document"] [,"creator"]))
(5) jumpoutreturn :
作用:執行program參數設置的程序,執行完該程序后,回到authorware環境中。語法格式:jumpoutreturn("program", ["document"] [,"creator"])
(6) jumpprintreturn :
作用:啟動參數program指定的程序,并打印document 參數中指定的文件,在文件打印完畢后,直接返回authorware環境。
語法格式:jumpprintreturn(["program"], "document" [, "creator"])
(7) quit
作用:結束當前運行的authorware程序。
語法格式:quit([option])
(8) quitrestart :
作用:退出子程序,從主程序的起始位置恢復運行主程序。
語法格式:quitrestart([option])
(9) restart:
作用:將程序跳轉到文件的起始位置,重新執行程序。
語法格式:restart()
步驟2 常用系統函數及其應用實例;
(1) displayicon
displayicon函數用來顯示一個設計按鈕內容,該函數同流程線上的設計按鈕一樣顯示一個設計按鈕中的內容。語法格式為:
displayicon(iconid@"icontitle")
如果讀者正在用一個計算的結果來確定顯示的對象時,該函數是非常有用的。在圖6-42所示的【運算】設計按鈕對話框中我們來實現這種控制。
圖6-42 使用displayicon函數顯示流程線上已經存在的設計按鈕
注意:
在我們的程序設計過程中,我們應該盡量使用displayicon函數來顯示流程線上已經存在的設計按鈕,不要重復地使用設計按鈕來顯示相同的內容。
(2) eraseicon:
同displayicon的性質和使用方法相同,唯一的不同是該函數是用來擦除設計按鈕的。
語法格式為eraseicon(iconid@"icontitle")
實例如圖6-43所示。
圖6-43 使用eraseicon函數擦除一個顯示在展示窗口中的設計按鈕
(3) find:
該函數的功能是在某一特定字符串內尋找符合某種模式的字符。如果在字符串中查找到該模式字符后,函數返回一個在特定字符串中查找到的第一個與所設定模式相匹配的字符的位置。語法格式為:number := find("pattern", "string")
實例1:
appleposition := find("apple","banana, orange, apple")
appleposition的返回值是17,因為與apple相匹配的字符串中的第一個字符的位置是字符串中的第17個字符(包括字符之間的空格)。
實例2:
lyric := "the rain in spain falls mainly on the plain"
start := find("?ain",lyric)
因為“?ain”同“rain”相匹配,所以start的值是5。
提示:
對于find函數的返回值,當沒有尋找到與設定模式相匹配的字符時,該函數的返回值為0。
(4) getline:
讀者可以將字符串作為一個小型數據庫來使用。利用getline函數,讀者可以從字符串中連續獲取信息。
語法格式:resultstring := getline("string", n [, m, delim])
下面請讀者以實例來學習該函數的使用方法:
文本文件phone.txt中的內容如下所示:
john<tab>smith<tab>555-1234<return>jane<tab>doe<tab>5555678<return>
sam<tab>spade<tab>555-9012<return>
為了取得該文件中的某一人的電話號碼,我們需要三個操作:
①讀取文件的內容。
②讀取行的內容。
③讀取行中某一區域的內容,該內容就是所需要的電話號碼。
下面讓我們來逐步實現上述操作:
filecontents := readextfile("phone.txt")
讀取文件的內容,存儲在變量filecontents中;
fileline := getline(filecontents, 2)
讀取文件內容的第二行,存儲在變量fileline中。
phone := getline(fileline, 3, 3, tab)
讀取第二行內容中的第3個區域的全部內容。以tab鍵來分隔區域。
變量fileline 的值是jane<tab>doe<tab>555-5678。
存儲電話號碼的變量phone 的值是555-5678。
(5) if then 條件判斷語句
條件判斷并執行。該函數可以根據不同的條件,來判斷執行不同的內容。通過使用該函數,可以為用戶的應用程序提供一種對變化的信息的觀察和判斷能力,從而實現靈活的程序的交互性。
該函數的語法格式有如下多種:
①if 條件1
then 任務1
end if
②if 條件1
then
任務1
任務2 …..
end if
③if 條件1
then 任務1 else 任務2
④if 條件
then 任務1…
else
任務n…
end if
⑤if 條件1 then
任務1…
else if 條件2 then
任務n…
else
任務m…
end if
下面讓我們來看一個實例:
if(明天旅游) then
(要準備食品)
(要準備現金)
else
(在家學習)
end if
源程序如圖6-44所示:
圖6-44 if-then 語句用于對條件做出決定
(6) insertline:
我們用getline()來從字符串獲取信息,用insertline來設置信息,insertline函數將一行插入到字符串中指定的位置。
語法格式為:result := insertline("string", n, "newstring", [delim])
實例為:
我們有兩個字符串,即字符串string1和string2。
string1:= "monday"^return^"wednesday"^return
string2:= "tuesday"
使用insertline函數將string2中的字符串添加到string1字符串中的第二行:
string3:= insertline(string1, 2, string2)
在【運算】設計對話框中的設置如圖6-45所示:
字符串string3的值為:"monday ^return^ tuesday ^return^ wednesday"
(7) quit():
在交互式多媒體作品中,我們關閉了用戶的菜單欄,使用了圖形界面。但是,當我們這樣做的時候,也取消了用戶使用authorware自帶的文件菜單來退出的能力。
為了讓用戶能夠順利的退出authorware程序,而不需要重新啟動計算機。我們在程序流程線上的【運算】設計按鈕中使用了quit函數。
語法格式為:quit([option])
在使用quit()函數時,不同quit()函數的參數可以達到不同的退出效果:
下面,請讀者學習該函數各參數的含義:
0:退出程序模塊,顯示程序管理器(windows 3.1)和桌面(windows 95或nt)。如果該程序模塊是由其它程序所調用的,則authorware返回調用它的程序中,繼續執行。
1:退出程序模塊,顯示windows 3.1程序管理器和windows 95桌面。
2:重新啟動計算機(windows 95 或nt)或返回dos(windows 3.1)。
3:關閉計算機(windows 95 或nt)或退出authorware程序,顯示windows 3.1程序管理器。
提示:
該參數是一個可選項,我們可以使用quit( ),不要任何參數,此時,authorware默認的參數是0。
注意:
請讀者注意,因為authorware遇到quit( )函數時,就立即退出應用程序,在quit( )函數后的源程序將被忽略。
(8) repeat while循環控制函數:
repeat while函數類似于if-then函數,該函數可以使authorware在讀者所設定的條件下運行某些功能。
repeat while(天下雨)
(帶雨傘)
end repeat
在此實例中,循環將繼續重復,直到天不下雨。
(9) writeextfile:
使用該函數來寫外部文件。該函數的語法格式為:
writeextfile("filename", "string")
提示:
讀者可以使用authorware變量filelocation和recordslocation來輔助設置或定位要讀寫的文件。
注意:
如果讀者以一個已經存在的文件名寫文件,那么該已經存在的文件將被覆蓋。
(10) random():
該函數用于生成一個隨機數。語法格式為:
圖6-46設置聲音播放的隨機次數
random(min, max, units)
其作用是生成一個介于min和max間的隨機數和兩個隨機數的小數點后的位數。
例如:當min ,max 和units分別為1,10和0.1時,產生的隨機數將類似于:1.2和5.8的數。
下面的例子中,我們將對聲音的播放進行控制,播放的次數隨機地從最多3次,最少1次,該控制可以在設置聲音的對話框中設置,如圖6-46所示在【fixed number of times】選項的正文輸入框中輸入隨機函數randow(1,3,1)來生成對聲音播放次數的控制。
運算符和表達式
運算符
運算符是在authorware中執行某項操作的一個標識符。例如:乘法運算符“*”是將該符號兩端的數值做乘法運算;連接運算符“^”是將該符號兩端的字符串相連接成為一個新的字符串。例如user^name的運算結果就是username。
運算符的類型及其應用實例:
在autorware中,共有五種運算符:賦值運算符、關系運算符、算術運算符、邏輯運算符和連接運算符。下面我們將以實例來學習這五種運算符的含義和使用方法。
(1) 賦值運算符“:=”:
該運算符的含義是將運算符右邊的值賦給運算符左邊的變量。
下面請讀者以運算符的一些常見用法來學習該類運算符的使用:
userid:=964674 | 將數值964674賦給自定義變量userid。 |
hometown:=”beijing” | 將字符串beijing賦給自定義變量hometown。 |
movable@”circle”:=true | 將邏輯變量true賦給系統變量movable,產生的結果是【circle】顯示設計按鈕中的對象被設置為可移動,最終用戶可以用鼠標在展示窗口中移動這些對象。 |
field:=field+1 | 將自定義變量field的當前值加1,然后將新的值賦給變量field。 |
注意:
當一個字符串的值賦給一個變量時,必須為字符串加上雙引號,否則,authorware會將該字符串當作變量名來處理。
技巧:
在實際的程序設計中,當我們輸入賦值運算符的時候,我們可以只輸入“=”即可,authorware會自動為讀者在程序中加上冒號“:”。
(2) 關系運算符:
① 關系運算符的常見類型和含義如表6-4所示。
表6-4 關系運算及其含義
運算符 | 含義 |
= | 表示運算符兩端的值相等 |
<> | 表示運算符兩端的值不相等 |
< | 表示運算符左邊的值小于右邊的值 |
> | 表示運算符左邊的值大于右邊的值 |
<= | 表示運算符左邊的值小于等于右邊的值 |
>= | 表示運算符左邊的值大于等于右邊的值 |
② 關系運算符的常見用法:
注意:
對于一個只有關系運算符的表達式,當該表達式成立時,則該表達式的值為邏輯值;值有兩種情況:true 或 fasle。
userid=964674 | 如果自定義變量userid的值等于964674,則該表達式返回一個值true;否則返回false |
userid>900000 | 將自定義變量userid的值同900000相比較,如果userid的值大于90000,則該表達式返回值true,否則返回false。 |
videodone=true | 將邏輯變量videodone的值與true相比較,如果videodone的值為true,則該表達式返回邏輯值true,否則返回邏輯值false。 |
注意:
其它關系運算符的使用方法參考上述實例。請讀者注意:關系運算符的返回值是邏輯值,true 或 false。
(3) 邏輯運算符
① 邏輯運算符的一些常見類型和含義如表6-5所示。
表6-5 邏輯運算符及其含義
運算符 | 含義 |
~ | 邏輯非 |
& | 邏輯與 |
| | 邏輯或 |
② 邏輯運算符的常見用法:
switch:=~switch | 該表達式的含義是改變變量switch的狀態,如 |
switch:=status1&status2 | 如果變量status1和status2的值都為true時, |
switch:=status1|status2 | 如果變量status1和status2的值有一個為true |
(4) 算術運算符:
① 算術運算符的基本類型如表6-6所示。
表6-6 算術運算符及其含義
運算符 | 含義 |
+ | 將運算符左右兩邊的值相加 |
- | 將運算符左右兩邊的值相減 |
* | 將運算符左右兩邊的值相乘 |
/ | 將運算符左邊的值除以右邊的值 |
** | 將運算符右邊的值作為左邊的值的指數來進行運算 |
② 算術運算符的常見用法:
算術運算符的使用方法與我們通常使用的加、減、乘、除、乘方等算術運算完全相同。例如我們要計算變量a的值乘以b的值,然后再減去變量c的值,將結果再除以變量d的值。則可以寫為result:=(a*b-c)/d。此時,變量result存儲的就是最后的結果。
(5) 連接運算符:“^”:
連接運算符“^”的作用就是將兩個字符串連接成為一個新的字符串。
下述實例讓我們來理解該運算符的含義:
變量content1:=”hello “; 變量content2:=”how are you?”
content:=content1^”讀者朋友”^content2
經過連接運算符的連接,content變量的內容為“hello讀者朋友how are you?”。
表達式
表達式是由常量、變量、函數和運算符所組成的一個實現特殊計算或操作的語句。表達式可以應用到【運算】設計按鈕對話框中,也可以在各屬性對話框或者插入到顯示設計按鈕中的正文對象中顯示其值。
請讀者注意,在使用表達式的時候要注意以下事項:
(1) 數字的使用:如果要在表達式中使用一個負數,則讀者可以使用“-”運算符。
對于比較大的數字,我們只能使用數字符號,不能有千位或萬位分隔符。
在使用數字時,不能包含貨幣符號(如$、¥等)和科學符號。
(2) 字符串的使用:在表達式中使用字符串,必須使用雙引號,以將字符串區別于變量名、函數和運算符。
如果讀者要在字符串中使用雙引號,必須在雙引號前加上反斜杠(/)。如下述實例:
“she said:/”she like to travel in beijing/””
如果要在一個字符串中使用反斜杠時,必須在反斜杠前加上一個反斜杠。如下述實例:
“d://windows//athorware//xtras//”
(3) 表達式注釋的使用:在一個表達式的末尾,讀者可以加上一個簡短的注釋以說明該表達式的具體含義和使用的目的。
要在表達式末尾加注釋,只需使用兩個連字符“――”加在注釋的前面。實例如下:
result:=content1^content2――將兩個字符串連接起來
圖6-47 在正文對象中插入表達式的值
注意:
讀者如果想在屏幕上顯示表達式的值,則必須在【顯示】設計按鈕或【交互作用】設計按鈕中的正文文本對象中插入表達式,插入的表達式必須用花括號來括起來,否則autorware會將表達式當作正文對象來顯示。具體設置如圖6-47所示,只有在運行程序時,表達式的值才會顯示到展示窗口中。
運算符優先等級
在對表達式求值的時候,當一個表達式有多個運算符時,authorware并非按照運算符在表達式中的順序從左至右順序執行。authorware是按照運算符的優先等級來決定運算順序的。
下面讓我們來學習運算符的優先級別。第一級的運算符具有最高的優先權,依次類推。如果在表達式中出現同一級別的運算符,則authorware按照從左至右的方式來順序執行。
第一級:()
第二級:~
第三級:**
第四級:*
第五級:+ -
第六級:^
第七級:= < > <> >= <=
第八級:& |
第九級::=
提示:
第一級為級別最高,第九級為級別最低。authorware在執行表達式時,先執行級別高的運算符,然后執行級別低的運算符。當相同級別的運算符出現時,authorware按照從左至右的順序來執行表達式中的運算。
【運算】設計按鈕
讀者在前面的學習中會發現,authorware中的【運算】設計按鈕是authorware源程序主要發生的地方。然而,authorware的源程序還可以出現在其它設計按鈕的屬性對話框中。
該部分請讀者詳細學習【運算】設計按鈕在authorware程序設計中的運用。
在【運算】設計按鈕對話框中,可以包含常量、變量、函數、表達式等各種形式的內容。
【運算】設計按鈕同【判定】設計按鈕相同,本身不包含顯示對象的功能。事實上,【運算】設計按鈕只是一個容納常量、變量、函數和表達式等各種形式內容的容器。如圖6-48所示。
圖6-49【運算】設計按鈕對話框
建立【運算】設計按鈕的步驟如下:
(1) 拖曳一個【運算】設計按鈕到程序的流程線上。
(2) 雙擊該【運算】設計按鈕打開對話框,如圖6-49所示。
(3) 在該對話框中輸入要輸入的autorware源程序。
(4) 單擊圖6-49最右上方的windows關閉窗口按鈕,或者雙擊圖中最左上方的【運算】設計按鈕符號,彈出圖6-50所示的提示框,authorware詢問用戶是否要關閉該【運算】設計按鈕對話框,單擊【yes】命令按鈕,確認要關閉。關閉該對話框。
圖6-50確認關閉的提示框
注意:
當用戶關閉【運算】設計按鈕對話框后,authorware會自動檢測用戶輸入的源程序中的變量、函數和語法等,是否有新的變量、新的自定義函數、參數的使用;程序語法的準確性等等內容,authorware會根據用戶輸入源程序的相關問題彈出與之相對應的對話框和提示內容。用戶可以根據authorware的提示來改正源程序中的問題和未定義的變量、函數等。事實上,authorware的這種功能,類似于其它編程語言的編譯命令。
如果用戶輸入的源程序中有問題,【運算】設計按鈕對話框是不能關閉的,只有【運算】設計按鈕對話框中輸入的內容完全正確,該對話框才可以關閉。
注意:
在程序的設計過程中,用戶可以同時打開多個【運算】設計按鈕對話框。
技巧:
不保存任何修改關閉【運算】設計按鈕對話框的快捷方法是按下“esc”鍵。
保存修改關閉【運算】設計按鈕對話框的快捷方法是按下鍵盤右邊的數字鍵區里的回車鍵(windows)。
提示:
在程序的設計過程中,我們輸入到【運算】設計按鈕對話框中的信息只有在該對話框關閉后才能產生效果,在程序的設計過程中,請讀者在運行程序模塊前確保關閉了【運算】設計按鈕對話框。讓該對話框開著只能導致讀者的修改被忽略。
提示:
【運算】設計按鈕對話框的大小是可以改變的,位置是可以在屏幕上移動的。讀者可以象任何windows窗口一樣,重新定義窗口的大小及位置。拖動窗口的任何一條邊框,可以重新定義窗口的大??;簡單地通過拖動標題條來拖動窗口,重新定義窗口的位置。這一功能在我們需要同時打開很多窗口的時候是非常有益的。
提示:
讀者可以象在展示窗口一樣在【運算】設計按鈕對話框中改變文本的字體和字體大小。
【運算】設計按鈕對話框中的字體的字體大小是全局變量。所選的字體和字體大小適合于每一個【運算】設計按鈕對話框的所有內容。事實上,選擇字體和字體大小只是為了使用的方便。字體和字體大小對變量、函數和表達式沒有任何影響。
使用【運算】設計按鈕為設計按鈕加裝飾
authorware源程序既可以放置在流程線上的【運算】設計按鈕內,也可以直接附加在任何設計按鈕(【運算】設計按鈕除外)上。當源程序附加在設計按鈕上的時候,autorware便產生一個裝飾,如圖6-51所示。
圖6-51 附加在設計按鈕上形成裝飾
為設計按鈕添加裝飾的步驟如下:
(1) 在程序流程線上選擇要加裝飾的設計按鈕,使其處在高亮。
(2) 使用authorware中【modify】菜單中【icon】子菜單的【calculation】命令(快捷鍵為ctrl+=),彈出【運算】設計按鈕對話框。
(3) 在對話框中輸入authorware的源程序。
(4) 輸入完畢后,關閉【運算】設計按鈕對話框窗口。
authorware的源程序是放在單獨的【運算】設計按鈕中還是作為一個裝飾,這些并不重要。它們的作用基本上是相同的。
使用【運算】設計按鈕的好處是讀者可以為該按鈕定義一個合適的標題,并為其創建關鍵詞。當程序的開發人員要修改該設計按鈕內的源程序時比較方便查找。
使用裝飾的好處是可以使用更少的設計按鈕。
注意:
如果一個設計按鈕有一個附加于它的裝飾,則autorware在執行該模塊時會在設計按鈕之前先執行裝飾中的內容。
技巧:
對于【判定】設計按鈕和【交互作用】設計按鈕,如果希望每一次程序模塊執行該設計按鈕時都要執行相同的程序內容,則讀者可以將這些相同的程序內容作為一個裝飾附加到這兩種設計按鈕上。
在【運算】設計按鈕對話框中使用說明
【運算】設計按鈕除了用來輸入authorware的源程序外,還有為程序模塊相關內容做說明的功能。
圖6-52 【運算】設計按鈕對話框作為程序的說明
如圖6-52所示,我們使用【運算】設計按鈕對話框窗口作為程序模塊的說明。在該窗口內我們可以輸入任何有關該模塊的信息。一般情況下,我們將該設計按鈕放置在流程線上作為程序模塊的第一個設計按鈕。
為在【運算】設計按鈕對話框中輸入信息,我們使用了authorware所提供的【運算】設計按鈕對話框中的注釋功能。
該對話框中的任何內容前面如果加上兩個連詞符“――”,則該行連詞符的所有內容便為注釋內容。authorware在檢測【運算】設計按鈕輸入內容的時候不再檢測該部分內容,只將它們作為注釋來考慮,不再作為源程序的執行內容。
練習
(1) 希望讀者對該實例中的例子進行實踐和體會。在這些實例中,我們以簡單的實例為基礎,學習了authorware的函數、變量和表達式,并學習了【運算】設計按鈕的使用。這些內容是autorware實現交互作用多媒體創作的基礎。作為較高級的程序設計人員,必須對authorware的變量、函數有較深入的學習和熟練地掌握它們的應用。
(2) 希望讀者熟悉附錄中的authorware所提供的系統變量、系統函數。只有對這些變量和函數的用法和功能比較熟悉,才有可能編制出較靈活的多媒體作品。
(3) 盡可能多地對authorware所提供的變量和函數進行實踐和操作。
新聞熱點
疑難解答