主要內(nèi)容
我們在學(xué)習(xí)任何計(jì)算機(jī)編程語言時(shí),變量和函數(shù)都是學(xué)習(xí)過程中不可缺少的內(nèi)容,而且是最先接觸的內(nèi)容。我們在這里介紹authorware變量、函數(shù)和表達(dá)式,并非它們在authorware來講并不重要,而是因?yàn)橹挥性谑煜ち薬uthorware各設(shè)計(jì)按鈕的使用方法和authorware多媒體程序設(shè)計(jì)基本方法的基礎(chǔ)上,我們才可以深刻地理解函數(shù)、變量的含義和使用方法,才能將authorware的程序設(shè)計(jì)按鈕和函數(shù)、變量及表達(dá)式結(jié)合起來,創(chuàng)作出優(yōu)秀的作品來。
在多媒體程序設(shè)計(jì)過程中,有時(shí)候?yàn)榱藵M足特殊的需要,authorware所提供的函數(shù)和變量已經(jīng)不能滿足需要,所以讀者可以自行定義變量和函數(shù),從而使程序的設(shè)計(jì)具有更大的靈活性。
authorware是可視化編程平臺,用戶主要是使用authorware提供的設(shè)計(jì)按鈕來完成對程序的設(shè)計(jì)。但是,如果僅僅使用authorware提供的設(shè)計(jì)按鈕來創(chuàng)建作品,則不能充分地實(shí)現(xiàn)作品的靈活性、交互性等特性。
在有些作品的設(shè)計(jì)中,某些特殊的需求僅僅使用設(shè)計(jì)按鈕是不能實(shí)現(xiàn)的,必須使用變量和函數(shù)作為程序設(shè)計(jì)的輔助手段來實(shí)現(xiàn)特殊的功能。
在該實(shí)例中,我們使用大量的實(shí)例來學(xué)習(xí)該部分內(nèi)容,通過對大量實(shí)例的分析,來達(dá)到對其它函數(shù)和變量的使用方法有較深入了解的目的。
下面,請讀者首先學(xué)習(xí)函數(shù)和變量的定義和它們的使用場合。
實(shí)例過程
變量和函數(shù)的定義
變量是一個(gè)其值可以改變的量。
系統(tǒng)變量是authorware本身所自帶的變量。在程序的執(zhí)行過程中,authorware隨著程序的執(zhí)行自動監(jiān)測和調(diào)整系統(tǒng)變量的值。例如altdown變量,在程序的整個(gè)執(zhí)行過程中,authorware隨時(shí)監(jiān)測alt按鈕是否按下,如果該按鈕正在被按下,則altdown變量的值為true,否則為false。讀者可以在程序中調(diào)用該變量作為運(yùn)行某些特殊內(nèi)容的觸發(fā)條件,以便在程序運(yùn)行的全過程都可以監(jiān)測該變量,隨時(shí)執(zhí)行相應(yīng)的反饋信息。
自定義變量是用戶自己定義的變量。authorware允許用戶自己創(chuàng)建新的變量,authorware同樣也可以跟蹤存儲變量值的變化。
注意:
系統(tǒng)變量和自定義變量在使用上是沒有任何差別的。但是,請讀者注意,在定義自定義變量時(shí),要避免使用同系統(tǒng)變量相同的變量名,否則,會引起系統(tǒng)中相關(guān)內(nèi)容的混亂。
函數(shù)主要是用于某一特殊的操作。authorware為用戶提供了大量的系統(tǒng)函數(shù)來滿足用戶程序設(shè)計(jì)的需要。例如authorware提供的quit()函數(shù),可以使authorware在執(zhí)行程序時(shí),當(dāng)碰到該函數(shù)則自動結(jié)束程序,返回執(zhí)行程序的操作系統(tǒng)環(huán)境。
對于初級的用戶來說,authorware提供的系統(tǒng)函數(shù)已基本上能滿足需求,所以,初級用戶只要熟練掌握系統(tǒng)函數(shù)的使用方法就可以了。對于高級用戶,如果系統(tǒng)提供的系統(tǒng)函數(shù)不能滿足需求,則可以自定義函數(shù)來滿足特殊任務(wù)的需求。
在authorware中,變量和函數(shù)的使用有如下方式:

圖6-1【運(yùn)算】設(shè)計(jì)按鈕對話框
(1)在【運(yùn)算】設(shè)計(jì)按鈕對話框中使用。例如,我們?yōu)榱耸钩绦蜻\(yùn)行到某個(gè)位置的時(shí)候自動退出而返回操作系統(tǒng)中:
①首先可以在該位置設(shè)置一個(gè)【運(yùn)算】設(shè)計(jì)按鈕。
②然后雙擊打開該設(shè)計(jì)按鈕對話框。
③最后在圖6-1所示的【運(yùn)算】設(shè)計(jì)按鈕對話框中輸入“quit(0)”。這里的quit(0)就是一個(gè)系統(tǒng)函數(shù),該系統(tǒng)函數(shù)的作用是結(jié)束一個(gè)正在執(zhí)行的authorware 程序,并返回windows窗口。
(2)在各設(shè)計(jì)按鈕的對話框中使用:在對話框中,函數(shù)和變量主要是用來設(shè)置控制條件。當(dāng)設(shè)置的控制條件為真時(shí),執(zhí)行一種任務(wù)。否則,就執(zhí)行另一種任務(wù)。

圖6-2在正文對象中插入變量
(3)在【顯示】設(shè)計(jì)按鈕中顯示變量的數(shù)值或內(nèi)容。在程序設(shè)計(jì)的過程中,為了使用變量或函數(shù)來顯示某一類信息,可以將變量或函數(shù)插入到正文對象中。 例如:為了顯示某一學(xué)生在多媒體cai測試中的成績,我們可以自定義一個(gè)變量score來存儲學(xué)生的成績,程序的設(shè)計(jì)過程中實(shí)現(xiàn)的過程如下:
(1) 在測試結(jié)構(gòu)之后,添加一個(gè)【顯示】設(shè)計(jì)按鈕。
(2) 雙擊打開該【顯示】設(shè)計(jì)按鈕。
(3) 在展示窗口中輸入的正文如圖6-2所示;在該實(shí)例中,score是自定義變量,用來存儲學(xué)生測試的成績。
(4) 用鼠標(biāo)點(diǎn)擊窗口中的任意位置,彈出如圖6-3所示的【variables】對話框。
(5) 如圖所示設(shè)置該對話框來定義新的變量。
(6) 單擊【ok】按鈕,結(jié)束設(shè)置。
(7) 讀者可以觀察到展示窗口中插入變量的正文對象的內(nèi)容已經(jīng)改變,正文對象中的變量名被實(shí)際的內(nèi)容所代替,如圖6-4所示。
注意:
在一個(gè)表達(dá)式中也可以使用變量和函數(shù)。表達(dá)式由變量、函數(shù)、常數(shù)和運(yùn)算符組成。通過運(yùn)算符將變量、函數(shù)、常數(shù)組合產(chǎn)生一個(gè)結(jié)果。

圖6-4插入變量的正文對象顯示情況
變量的類型
變量有兩種,一種是authorware提供的系統(tǒng)變量;另一種是用戶自定義的變量。
1. 系統(tǒng)變量
系統(tǒng)變量是authorware自身所提供的一套變量,它們主要用來跟蹤各設(shè)計(jì)按鈕中相關(guān)信息或系統(tǒng)信息等多方面的信息。
每一個(gè)變量都有一個(gè)唯一的名稱。系統(tǒng)變量的名稱是以大寫字母開頭,有一個(gè)或幾個(gè)單詞組成,單詞之間沒有空格。例如altdown等。有些變量后面可以跟一個(gè)“@”字符再加上一個(gè)設(shè)計(jì)按鈕的標(biāo)題名,這種變量稱為引用變量。利用引用變量讀者可以查找文件中任意一個(gè)設(shè)計(jì)按鈕中的相關(guān)信息。
2. 自定義變量
如果用戶的需求超出了authorware所提供的系統(tǒng)變量的功能,用戶可以定義一個(gè)變量,這種變量我們稱之為自定義變量。
自定義變量是由用戶自己定義的,在程序的設(shè)計(jì)中,要求變量名的唯一性,所以讀者在定義一個(gè)新的變量時(shí),新的變量名必須是一個(gè)除了系統(tǒng)變量名和已存在的自定義變量名外的新的名稱。自定義變量的使用方法同系統(tǒng)變量,能使用系統(tǒng)變量的地方也可以使用自定義變量。自定義變量的初始值是由用戶賦給的。
變量的賦值有以下兩種方法:
(1) 定義新的自定義變量時(shí)在【variables】對話框中給變量賦值。
(2) 在【運(yùn)算】設(shè)計(jì)按鈕對話框中使用賦值符號“:=”給變量賦初值。格式為:
“變量名”:=“初始值”
其中“:=”稱為賦值符號。在authorware的程序設(shè)計(jì)中,讀者可以直接使用“變量名”=“初始值”來賦值,authorware會自動檢測賦值過程,并自動為賦值符號添加一個(gè)“:”。例如:city:=“北京”,pause:=true等。
根據(jù)變量的存儲類型,變量可以劃分為三種。
在其它的編程語言中,例如c 、c++、fortran等語言中,變量的定義和使用是非常復(fù)雜的。例如:在fortran語言中,變量的類型有:
全局變量
局部變量
僅就一個(gè)簡單的數(shù)值型變量,fortran又有如下類型:
整型
實(shí)型
單精度
雙精度
長整型
各種各樣的變量類型使用戶眼花繚亂,學(xué)習(xí)起來非常困難的。之所以將變量定義得如此復(fù)雜,其主要目的就是為了節(jié)省寶貴的內(nèi)存資源。
在authorware中,我們沒有必要為定義變量的各種類型煞費(fèi)苦心,authorware沒有區(qū)分變量的整型和實(shí)型,是全局變量還是局部變量,以數(shù)值型變量來說,authorware只有一種單一的類型:數(shù)值型,authorwar將所有的變量都視為全局變量。
(1) 數(shù)值型變量:數(shù)值型變量用來存儲具體的數(shù)值。數(shù)值的類型是任意的數(shù)值,可以是整型(例如50、-30等)、實(shí)型(例如3.4456、-5.654)。
在authorware中,數(shù)值型變量的存儲范圍是
(2) 字符型變量:字符型變量用來存儲字符串。字符串是由一個(gè)或多個(gè)字符組成的。例如:“this is $100”、“the number is 3444”和“*as?”等都是字符串。
請讀者注意,在我們把字符串賦值給一個(gè)字符型變量的時(shí)候,必須為字符串加上雙引號。在authorware中,一個(gè)字符型變量可以存儲的字符數(shù)長達(dá)3000個(gè)。
(3) 邏輯變量:邏輯變量存儲兩種狀態(tài):true 或者false。
邏輯變量最典型的用途是作為一個(gè)判斷條件,激活或不激活某一選項(xiàng)。
函數(shù)的類型
函數(shù)主要用來執(zhí)行一種特殊的操作。 authorware的函數(shù)分為以下兩種類型:
(1) 系統(tǒng)函數(shù):系統(tǒng)函數(shù)是authorware自身提供的一系列函數(shù)。這些函數(shù)對于圖形對象、正文對象、設(shè)計(jì)按鈕和文件等進(jìn)行直接操作。
注意:
對于函數(shù)來說,名稱必須唯一,而且每一個(gè)函數(shù)必須遵循某種使用規(guī)則,這種規(guī)則稱之為語法。一個(gè)函數(shù)一般包含一至幾個(gè)參數(shù),函數(shù)的參數(shù)是authorware為完成某一特定任務(wù)所必須的信息。例如函數(shù)random(min, max, units),參數(shù)為min(最小值)、max(最大值)和units(小數(shù)點(diǎn)后位數(shù))。系統(tǒng)函數(shù)均以大寫字母打頭,由一個(gè)或多個(gè)單詞組成,單詞之間沒有空格。
(2) 自定義函數(shù):對于authorware系統(tǒng)無法完成的特殊任務(wù),讀者可以自己定義函數(shù)來完成這些任務(wù),具體的內(nèi)容參見后面的創(chuàng)建自定義函數(shù)。
系統(tǒng)變量的分類和使用
authorware所提供的系統(tǒng)變量可以分為以下九大類:
decision:判定判斷變量。
file:文件管理變量。
framework:框架管理變量。
general:一般用途變量。
graphic:圖形控制變量。
icons:設(shè)計(jì)按鈕管理變量。
interaction:交互管理變量。
time:時(shí)間管理變量。
video:視頻管理變量。
在系統(tǒng)變量的九大類中,各自還有處理這一類對象的大量變量,下面我們將通過具體實(shí)例來學(xué)習(xí)系統(tǒng)變量的使用方法。
1. 在應(yīng)用程序中使用系統(tǒng)變量:
在應(yīng)用程序中使用系統(tǒng)變量,具體的操作步驟如下:
(1) 選擇變量的插入位置:

圖6-5 在【運(yùn)算】對話框中插入系統(tǒng)變量
① 如果在【運(yùn)算】設(shè)計(jì)按鈕對話框中的某個(gè)表達(dá)式和某一函數(shù)中使用變量,則首先將光標(biāo)移動到要插入變量的位置。例如我們要將getword()函數(shù)中的string參數(shù)用hottextclicked系統(tǒng)變量代替,首先在圖6-5中選擇string,然后使用鍵盤來輸入該系統(tǒng)變量的名稱。
② 如果要在一個(gè)設(shè)計(jì)按鈕的對話框中使用系統(tǒng)變量,則首先需將光標(biāo)移動到要插入變量的地方。例如我們在一個(gè)熱區(qū)響應(yīng)類型的【response】對話框中的【active if true:】正文輸入框中使用altdown系統(tǒng)變量,則首先需將光標(biāo)移動到正文輸入框中要插入該系統(tǒng)變量的地方。如圖6-6所示。

圖6-6 在對話框中插入系統(tǒng)變量的位置
(2) 使用【window】菜單中的“variables”命令,或按快捷鍵ctrl+shift+v,打開如圖6-7所示的【variables】變量對話框。

圖6-7 【variables】變量對話框
(3) 在圖6-7所示對話框中的變量類型【category】下拉列表中選擇所使用的變量類型,會在變量名稱顯示框中顯示所有屬于該類型的變量的名稱。如果我們不知道所使用變量的所屬類型,可以選擇該下拉列表中的【all】選項(xiàng),這樣在系統(tǒng)變量名稱顯示框中將按照字母的順序顯示authorware所有系統(tǒng)變量的名稱。
(4) 在圖6-7所示變量名稱列表中單擊要使用的系統(tǒng)變量名。
(5) 單擊對話框中的【paste】命令按鈕,便將該變量使用時(shí)的名稱剪貼到前面所指定的位置上。
(6) 【variables】變量對話框是一個(gè)獨(dú)立的浮動窗口,如果還要在其它地方使用系統(tǒng)變量,不需要關(guān)閉變量對話框,只需首先選擇要插入系統(tǒng)變量的位置,然后重復(fù)上述操作即可。
(7) 當(dāng)將所有需要插入的變量完成后,使用【done】命令按鈕關(guān)閉對話框。
注意:
如果讀者對系統(tǒng)變量的名稱和使用方法非常熟悉,則不必使用【variables】變量對話框來剪貼插入變量,讀者可以直接在圖6-6所示的正文輸入框中直接輸入變量的名稱。
2. 引用變量和查詢指定設(shè)計(jì)按鈕中變量的值
在authorware中,變量的值是隨著程序的執(zhí)行隨時(shí)改變的,因此,在程序的不同地方,變量的值有可能不同。在authorware中,有很多變量允許用戶在一個(gè)程序的不同的地方查閱某個(gè)設(shè)計(jì)按鈕中該變量的值。我們稱這樣的變量為引用變量。
注意:
引用變量的格式為:“變量名”@“設(shè)計(jì)按鈕標(biāo)題”。
下面,讓我們用一個(gè)簡單的例子來說明引用變量的使用方法。
該實(shí)例的內(nèi)容是:使用entrytext變量查閱最終用戶正文輸入響應(yīng)中輸入的正文內(nèi)容,然后在程序的執(zhí)行過程中將用戶輸入的內(nèi)容在適當(dāng)?shù)奈恢弥匦嘛@示出來。
程序的邏輯結(jié)構(gòu)如圖6-8所示。

圖6-8程序的邏輯結(jié)構(gòu)
在程序中我們使用了【交互作用】設(shè)計(jì)按鈕中的【正文輸入】響應(yīng)分支結(jié)構(gòu)來讀取用戶輸入的正文,將用戶輸入的內(nèi)容存儲在系統(tǒng)變量entrytext中,在標(biāo)題為“回顯正文”的【顯示】設(shè)計(jì)按鈕中創(chuàng)建一個(gè)正文對象,在正文對象中插入系統(tǒng)變量entrytext來顯示用戶輸入的信息,插入的形式為“用戶輸入的內(nèi)容為:{entrytext@“輸入”}”,如圖6-8所示。
3. 自定義變量的定義和編輯
雖然authorware提供了跟蹤所能想象的任何事件的變量,但在很多時(shí)候,讀者還是希望創(chuàng)建自己的變量來跟蹤某一特定的內(nèi)容。例如:在創(chuàng)建要求用戶輸入姓名、學(xué)號的一個(gè)交互性對話時(shí),用戶可以使用authorware提供的username來跟蹤用戶姓名,但你還要?jiǎng)?chuàng)建一個(gè)變量來跟蹤用戶的學(xué)號。
在authorware中,有兩種自定義變量的方法:
方法一:使用新建變量對話框來自定義變量。
如果讀者在運(yùn)算對話框、展示窗口或?qū)υ捒虻囊粋€(gè)區(qū)域中輸入了系統(tǒng)不認(rèn)識的變量,則系統(tǒng)將打開如圖6-9所示的新建變量對話框。
當(dāng)新建變量對話框打開后,用戶需要在對話框中輸入以下內(nèi)容:
(1)【name】:變量名稱正文輸入框:該區(qū)域顯示的是autorware不認(rèn)識的變量的名字,在該正文輸入框中,我們要輸入待定義變量的一個(gè)具有描述性的名字。例如userid,該名字能表達(dá)實(shí)際的含義,意思是用戶的id號。而象“a”或“x1”等都不是好的變量命名。
(2)【initial value】:初始值正文輸入框:該正文輸入框是可選的。使用該正文輸入框可以為用戶所定義的變量設(shè)置初始值。程序每次開始運(yùn)行該模塊時(shí)都將該正文輸入框中的值如同給authorware系統(tǒng)變量賦值一樣賦給用戶變量。
(3)【dispriction】:描述性文本區(qū)域:該輸入框也是可選的。
由于該區(qū)域是可選的,所以經(jīng)常被編程人員所忽略。事實(shí)上,該區(qū)域在程序的設(shè)計(jì)過程中是非常重要的。
在程序設(shè)計(jì)的初期,創(chuàng)建這些變量的程序設(shè)計(jì)者可能非常熟悉各變量的含義和使用方法,但是設(shè)計(jì)者會發(fā)現(xiàn),程序開發(fā)小組中的其它開發(fā)人員,甚至是創(chuàng)建變量的開發(fā)者自己,在創(chuàng)建變量的幾個(gè)月后都不再明白變量的含義和最初創(chuàng)建該變量的目的。所以,為了程序開發(fā)有序性和便于今后理解和使用自定義變量,請讀者在該區(qū)域中盡可能地加以描述。
注意:
關(guān)于自定義變量的數(shù)目,在authorware中是沒有限制的。但是,在程序的開發(fā)過程中,筆者建議讀者盡可能地限制自定義變量的數(shù)目。變量越少,應(yīng)用程序越容易維護(hù)。
方法二:使用【variables】變量對話框來自定義變量。
在運(yùn)算對話框、展示窗口或?qū)υ捒虻囊粋€(gè)區(qū)域中輸入系統(tǒng)不認(rèn)識的變量之前,我們可以使用【variables】變量對話框(如圖6-10)來預(yù)先定義一個(gè)自定義變量。

圖6-10【variables】變量對話框
具體的步驟如下:
(1) 在【catagory】變量類型列表中選擇圖示的文件名,該文件名表示所要定義的變量屬于所選擇的文件。
(2) 單擊【variables】變量對話框中的【new】命令按鈕,彈出新建變量對話框,如圖6-11所示。

圖6-11 新建變量對話框
(3) 依照方法一,在新建變量對話框中輸入如圖6-11所示的內(nèi)容。
(4) 單擊【ok】命令按鈕結(jié)束新變量的設(shè)置,結(jié)果如圖6-12所示。

(5) 讀者可以使用圖6-12中相應(yīng)的命令按鈕來修改所設(shè)定的變量。
①【rename】命令按鈕:單擊該命令按鈕,彈出圖6-13所示的【rename variable】對話框,在該對話框中來修改變量的名稱。
②【delete】:刪除命令按鈕:
單擊該命令按鈕,刪除在變量名列表中選擇的自定義變量。
(6) 直接在該對話框中設(shè)置變量的初始值和觀察變量的當(dāng)前值。
(7) 單擊該對話框中的【done】命令按鈕結(jié)束對新變量的定義。則新定義的變量就可以在authorware的程序中使用了。
注意:
在【variables】變量對話框中,authorware所提供的系統(tǒng)變量在該對話框中是不能修改和刪除的。只要用戶自定義的變量才可以使用修改和刪除命令。
技巧:
【variables】變量對話框在調(diào)試有大量變量的應(yīng)用程序時(shí)是非常有幫助的。我們可以通過使用該對話框來監(jiān)測變量值的變化。
4. 變量的賦值
變量最重要的作用是存儲信息,所以我們要經(jīng)常為變量賦值,正如讀者所了解的,每一個(gè)程序模塊運(yùn)行時(shí),authorware為許多變量都賦了一個(gè)初值。
對變量賦初值,我們按照下面的步驟來進(jìn)行:
(1) 打開【運(yùn)算】設(shè)計(jì)按鈕對話框。
(2) 首先輸入要賦值的變量名。例如我們要為學(xué)生的學(xué)號來賦值,則首先在【運(yùn)算】設(shè)計(jì)按鈕對話框中輸入變量名userid。
(3) 然后輸入冒號和等號(:=)。
注意:
authorware要求在賦值時(shí)使用一個(gè)冒號然后加一個(gè)等號,但在實(shí)際的操作中,讀者可以直接使用等號,authorware在關(guān)閉運(yùn)算設(shè)計(jì)按鈕對話框時(shí),會自動為讀者加上一個(gè)冒號。
(4) 在等號后輸入你想賦給變量的值。對于所賦給變量的值有如下格式:
① 字面常量:將所賦的值放在引號內(nèi),變量精確地等于你所輸入的值。例如:為變量userid賦給精確的值964674,如圖6-14所示。

圖6-14 引號內(nèi)的精確值賦給變量
③ 變量:將一個(gè)變量的值賦給另一個(gè)變量:例如為了獲取用戶在正文輸入響應(yīng)中輸入的內(nèi)容,我們可以使用entrytext系統(tǒng)變量為變量userid賦值,如圖6-15所示。

圖6-15 變量間賦值
③ 表達(dá)式:將一個(gè)表達(dá)式的值賦給變量:例如:要將用戶在交互響應(yīng)的正文輸入響應(yīng)中輸入的學(xué)號全部更換為大字母的名字,我們可以使用entrytext變量和uppercase函數(shù)來實(shí)現(xiàn),如圖6-16所示。

圖6-16 將表達(dá)式的值賦給變量
前面我們學(xué)習(xí)了變量的定義和一般使用步驟,下面我們將以實(shí)例來分別介紹系統(tǒng)變量在程序設(shè)計(jì)中的實(shí)際應(yīng)用,這些實(shí)例分別隸屬于系統(tǒng)變量的九大類。對每一類系統(tǒng)變量我們分別以一個(gè)實(shí)例來學(xué)習(xí)該類變量的使用方法,目的是讓讀者通過這些實(shí)例的分析,并結(jié)合附錄中系統(tǒng)變量的介紹來體會變量在程序設(shè)計(jì)中的作用,并掌握變量在程序設(shè)計(jì)中的使用技巧。
變量是authorware所提供的編程中強(qiáng)大的輔助工具,僅僅使用authorware提供的設(shè)計(jì)按鈕來設(shè)計(jì)多媒體作品是遠(yuǎn)遠(yuǎn)不能滿足需要的,所以我們需要大量地使用變量來完成某些特殊的操作和實(shí)現(xiàn)特定的功能。
能夠使用authorware提供的設(shè)計(jì)按鈕來進(jìn)行程序設(shè)計(jì)僅僅是初級的要求,對于真正的authorware程序設(shè)計(jì)人員,必須對authorware所提供的系統(tǒng)變量有比較熟練的掌握,能夠靈活地運(yùn)用這些變量來設(shè)計(jì)豐富的多媒體作品。
只有熟練地掌握變量的使用方法才能進(jìn)入authorware編程的新天地。希望讀者在下面的學(xué)習(xí)中仔細(xì)體會各系統(tǒng)變量的使用技巧和應(yīng)用方法與范圍。
實(shí)例一:decision類,pathcount和repcount變量:
本實(shí)例是利用pathcount來存儲當(dāng)前【判定】分支結(jié)構(gòu)中反饋分支的總個(gè)數(shù),repcount用了存儲所執(zhí)行的反饋分支的次數(shù)。使用這兩個(gè)變量,我們可以計(jì)算出在該【判定】分支結(jié)構(gòu)中,authorware退出該分支結(jié)構(gòu)之前運(yùn)行的反饋分支占分支總數(shù)的百分比。程序的邏輯結(jié)構(gòu)如圖6-17所示。
要實(shí)現(xiàn)這種任務(wù),我們需在分支結(jié)構(gòu)的【運(yùn)算】設(shè)計(jì)按鈕中輸入如下內(nèi)容:

圖6-17 實(shí)例一程序邏輯結(jié)構(gòu)
這里的percentcomplete為一個(gè)自定義變量,使用該變量來存儲athorware所執(zhí)行過的分支結(jié)構(gòu)反饋分支占反饋分支總個(gè)數(shù)的百分比。
我們可以在圖6-17所示的“顯示比例”【顯示】設(shè)計(jì)按鈕正文對象中插入該變量來顯示百分比。
實(shí)例二:file類:filelocation變量
filelocation變量包含運(yùn)行程序模塊所在的路徑。例如:讀者所執(zhí)行的程序模塊路徑為:“d:/authorware/test/examp618.a4p”,則filelocation變量中存儲的就是“d:/authorware/test/”。
該實(shí)例的內(nèi)容是將用戶輸入的用戶名(username變量)、日期和成績寫入與所執(zhí)行的程序模塊在同樣路徑的studentdata.txt文件中。
在程序的【運(yùn)算】設(shè)計(jì)按鈕中輸入的內(nèi)容如圖6-18所示:
我們利用writeextfile("filename", "string")函數(shù)將用戶輸入的信息寫入文件中:

圖6-18 實(shí)例二的程序設(shè)計(jì)
writeextfile("filelocation^studentdata.txt", "username^tab^date^tab^score")
提示:
在該函數(shù)中,符號“^”表示將該符號前面和后面的字符串連接起來,我們將在后面學(xué)習(xí)authorware支持的運(yùn)算符號。
提示:
“tab”鍵為該學(xué)生的各個(gè)信息之間在寫入文件時(shí)提供一個(gè)間距。
實(shí)例三:framework類,currentpageid變量:
currentpageid變量是一個(gè)數(shù)值型變量,用于存儲當(dāng)前顯示頁的設(shè)計(jì)按鈕id標(biāo)識;我們可以使用其引用變量來存儲指定頁的設(shè)計(jì)按鈕id標(biāo)識。
本實(shí)例中,我們使用currentpageid變量存儲的值來標(biāo)記框架結(jié)構(gòu)中的頁,以便于在今后的程序運(yùn)行過程中返回這些頁,被標(biāo)記的頁的標(biāo)識號存儲在bookmark列表中,程序的邏輯結(jié)構(gòu)如圖6-19所示:

圖6-19 實(shí)例三程序邏輯結(jié)構(gòu)
在make bookmark【運(yùn)算】設(shè)計(jì)按鈕對話框中輸入如下內(nèi)容:
bookmark=insertline("bookmark",0, currentpageid)
該表達(dá)式的意思是向bookmark中添加一個(gè)新頁的id標(biāo)識。
在goto mark設(shè)計(jì)按鈕中包含一個(gè)【運(yùn)算】設(shè)計(jì)按鈕,其中的內(nèi)容如下:
mark=getline(bookmark,1)
bookmark=deleteline(bookmark,1)
這兩個(gè)表達(dá)式的含義是得到最新加入到bookmark列表中的頁,然后再從列表中將該頁的標(biāo)識從列表中刪除。經(jīng)過這樣的設(shè)置后,【定向】設(shè)計(jì)按鈕就會跳轉(zhuǎn)到mark 標(biāo)記的頁中來執(zhí)行該頁中的相關(guān)反饋信息。
注意:
該實(shí)例中的三個(gè)函數(shù)insertline()、 getline()和deleteline()的具體使用方法參見附錄。
實(shí)例四:general類,clickx和clicky變量:
當(dāng)用戶最后單擊鼠標(biāo)按鈕時(shí),clickx包含從展示窗口左側(cè)邊框到鼠標(biāo)點(diǎn)的位置的像素?cái)?shù),clicky包含從展示窗口上側(cè)邊框到鼠標(biāo)點(diǎn)的位置的像素?cái)?shù),如圖6-20所示。

圖6-20 變量值的實(shí)際含義
其中圖6-20中的黑色邊框?yàn)檎故敬翱凇?br> 使用該變量,我們可以在游戲的制作中將一個(gè)大的區(qū)域劃分為許多小的區(qū)域,并可以確定用戶在哪一個(gè)區(qū)域中敲擊了鼠標(biāo)。從而,確定程序的運(yùn)行方式。具體的劃分區(qū)域的方法如圖6-21中的【運(yùn)算】設(shè)計(jì)按鈕對話框中的內(nèi)容。

圖6-21用clickx和clicky去發(fā)現(xiàn)用戶最后單擊鼠標(biāo)的位置
使用該對話框,我們可以將展示窗口劃分為20個(gè)像素寬的正方形小方格,當(dāng)用戶單擊了鼠標(biāo)后,我們就可以知道用戶單擊鼠標(biāo)在方格中的位置。
實(shí)例五:graphics類:layer變量:
layer變量用于存儲當(dāng)前(或指定的)【顯示】設(shè)計(jì)按鈕、【交互作用】設(shè)計(jì)按鈕、【數(shù)字化電影】設(shè)計(jì)按鈕所處的層數(shù)。在該實(shí)例中,我們在程序中插入一個(gè)數(shù)字化電影,使用layer變量的引用變量來設(shè)置數(shù)字化電影的層級別,使數(shù)字化電影的每一幀圖像必須位于“背景”【顯示】設(shè)計(jì)按鈕中顯示對象的前面。為了實(shí)現(xiàn)該特殊要求,操作步驟如下:
(1) 選擇數(shù)字化電影設(shè)計(jì)按鈕,使其高亮。
(2) 執(zhí)行authorware所提供的【modify】菜單中【icon】子菜單的【properties】命令(快捷鍵為ctrl+i),或者用鼠標(biāo)雙擊該【數(shù)字化電影】設(shè)計(jì)按鈕,彈出圖6-22所示的【數(shù)字化電影】屬性對話框。

圖6-22 設(shè)置【數(shù)字化電影】層的級別(設(shè)置層間相互關(guān)系)
(3) 在該對話框的【layer】正文輸入框中輸入:
layer@"背景"+1
(4) 單擊【ok】命令按鈕結(jié)束設(shè)置。
使用這種設(shè)置,當(dāng)程序運(yùn)行時(shí),數(shù)字化電影所播放的每一幀都在“背景”【顯示】設(shè)計(jì)按鈕中所顯示對象的前面。
實(shí)例六:icons類,displayx和displayy變量:
這兩個(gè)變量存儲的是特定設(shè)計(jì)按鈕內(nèi)顯示對象的中心與展示窗口邊框的距離。displayx變量存儲的是顯示對象中心與展示窗口左邊框的距離,以像素點(diǎn)為單位;displayy變量存儲的是顯示對象中心與展示窗口上邊框的距離,以像素點(diǎn)為單位。
程序的邏輯結(jié)構(gòu)如圖6-23所示。在該實(shí)例中,我們在“circle”【顯示】設(shè)計(jì)按鈕中繪制一個(gè)填充為藍(lán)色的圓,設(shè)置該圓可以在一定區(qū)域中移動(使用【in aera】選項(xiàng)),然后設(shè)置一個(gè)【等待】設(shè)計(jì)按鈕,給用戶一個(gè)能移動圓的時(shí)間,在“圓在展示窗口的位置坐標(biāo)”【顯示】設(shè)計(jì)按鈕中輸入正文對象,在正文對象中插入引用變量。如圖6-24所示。

圖6-24在正文對象中插入引用變量
程序的運(yùn)行結(jié)果是:當(dāng)用戶移動圓到不同的位置時(shí),在展示窗口的左上角將出現(xiàn)對象最終顯示位置的坐標(biāo)。程序的運(yùn)行結(jié)果如圖6-25所示。

圖6-25程序的運(yùn)行結(jié)果
實(shí)例七:interaction類,entrytext變量:
entrytext變量存儲的是最后在文本輸入對話框中用戶輸入的文本。讀者在創(chuàng)建一個(gè)文本輸入對話框時(shí),為了獲得用戶在文本輸入對話框中輸入的內(nèi)容,需要使用該變量。
該實(shí)例是讓用戶從一個(gè)交互作用的文本輸入響應(yīng)類型上輸入姓名和學(xué)號,然后程序讀取用戶的學(xué)號和姓名,再將姓名和學(xué)號顯示在展示窗口中。程序的邏輯結(jié)構(gòu)如圖6-26所示。
使用【交互作用】分支結(jié)構(gòu)的正文輸入響應(yīng)讓用戶輸入相應(yīng)的內(nèi)容。
【運(yùn)算】設(shè)計(jì)按鈕中使用entrytext變量將用戶輸入的內(nèi)容賦給相應(yīng)的變量。如:username等。【運(yùn)算】設(shè)計(jì)按鈕對話框中輸入的內(nèi)容如圖6-27所示。
在該對話框中我們輸入username:=entrytext
同樣,在下一個(gè)【運(yùn)算】設(shè)計(jì)按鈕中輸入如下內(nèi)容:
userid:=entrytext
然后在“回顯”【顯示】設(shè)計(jì)按鈕中顯示用戶輸入的內(nèi)容。

圖6-27 【運(yùn)算】設(shè)計(jì)按鈕中的輸入內(nèi)容
實(shí)例八:time類,fulldate變量:
該變量存儲的是計(jì)算機(jī)系統(tǒng)當(dāng)前的日期,其格式"1998年9月29日"。要在應(yīng)用程序的演示過程中顯示計(jì)算機(jī)系統(tǒng)當(dāng)前的日期,則可以在正文輸入對象中插入變量{fulldate}。
實(shí)例九:video類,videodone變量:
videodone變量是一個(gè)邏輯型的變量,該變量有兩種值,一種是true,另一種是false。在當(dāng)前的視頻信息播放結(jié)束時(shí),該值為true。為了在程序執(zhí)行到另一個(gè)設(shè)計(jì)按鈕之前完成某個(gè)視頻信息的播放,可以設(shè)置一個(gè)判定分支結(jié)構(gòu),并在圖6-28所示的對話框中的【until true】正文輸入框中輸入videodone。例如,要使某個(gè)視頻信息播放完畢后,立刻播放另一段視頻信息,則可以在圖示的對話框中進(jìn)行設(shè)置。

圖6-28 videodone使用實(shí)例
除了上面讀者所學(xué)習(xí)的九大類中的九個(gè)變量的實(shí)例外,在下面請讀者熟悉筆者在工作中經(jīng)常使用的幾個(gè)變量。
(1) choicenumber:authorware中的系統(tǒng)變量choicenumber存儲的是當(dāng)前交互循環(huán)中用戶匹配的最后響應(yīng)的編號,響應(yīng)路徑從【交互作用】設(shè)計(jì)按鈕的左邊至右邊依次編號,編號從1號開始。
我們可以使用該變量來判定是否要顯示特定的反饋。例如,如果用戶匹配的響應(yīng)是交互作用中的前三個(gè)響應(yīng)中的任意一個(gè),那么程序?qū)⒖旆胚@三個(gè)反饋分支中的內(nèi)容。否則,以正常速度播放,如圖6-29所示,條件響應(yīng)的類型可以設(shè)置為表達(dá)式:choicenumber<4。

圖6-29choicenumber在條件響應(yīng)中的使用
注意:
在程序中,我們要隨時(shí)跟蹤choicenumber的使用位置,如果在交互分支結(jié)構(gòu)中,增加或減少了路徑的個(gè)數(shù),則需要對表達(dá)式進(jìn)行修改
(2) hottextclicked:當(dāng)用戶用單擊或雙擊作為觸發(fā)條件來敲擊文本的觸發(fā)器時(shí),hottextclicked存儲用戶單擊或雙擊觸發(fā)的敲擊文本。
使用該變量可以為讀者作品中的目錄創(chuàng)建超級鏈接。當(dāng)用戶單擊熱文本時(shí),可以使用【導(dǎo)航】設(shè)計(jì)按鈕在框架結(jié)構(gòu)中查找每一頁上的關(guān)鍵詞是否為hottextclicked所存儲的值,如果找到該值,則程序模塊就跳轉(zhuǎn)到該頁中去執(zhí)行相應(yīng)的內(nèi)容。
(3) iconid: iconid變量存儲的是特定設(shè)計(jì)按鈕的唯一的數(shù)字標(biāo)識符。當(dāng)【導(dǎo)航】設(shè)計(jì)按鈕與一個(gè)【運(yùn)算】設(shè)計(jì)按鈕一起使用時(shí),該變量具有決定性的意義。
該變量還可以連接其它的變量和函數(shù)。例如讀者可以使用【擦除】設(shè)計(jì)按鈕來擦除基于該變量值的一個(gè)設(shè)計(jì)按鈕中的對象。使用方法如圖6-30所示。

圖6-30 使用iconid命令返回設(shè)計(jì)按鈕的id標(biāo)識
(4) lastlineclicked:lastlineclicked存儲的是用戶單擊一個(gè)文本對象的某一行的行號。行是用回車符定義的。
讀者可以利用該變量的特性,來創(chuàng)建一個(gè)書簽系統(tǒng)。當(dāng)用戶單擊一個(gè)書簽名列表中的某一行文本時(shí),authorware利用該變量來識別單擊的是哪一行。然后,我們可以通過所在行數(shù)來得到其它相關(guān)的信息,從而,執(zhí)行與該行有關(guān)的雙擊按鈕。
(5) timeoutlimit:在程序跳轉(zhuǎn)到由系統(tǒng)函數(shù)timeoutgoto指定的設(shè)計(jì)按鈕之前,timeoutlimit以秒為單位來標(biāo)志模塊等待用戶某種類型活動的時(shí)間量。
在演示會和展覽會上,我們可以用該變量來控制系統(tǒng)空閑多長時(shí)間。一旦控制時(shí)間到,程序?qū)⑻林付ǖ碾p擊按鈕來執(zhí)行該設(shè)計(jì)按鈕中的內(nèi)容。如圖6-31所示。

圖6-31 timeoutlimit控制系統(tǒng)空閑時(shí)間
新聞熱點(diǎn)
疑難解答