本節導讀:
一、變量的相關知識
變量通常是用來存儲程序執行過程中涉及的數據。變量可以存儲的數據類型有:數值型、字符型、邏輯型,當然也可以存儲以數組、列表等形式存在的數據。變量的加入,使authorware的交互編程更加靈活多變。
(一)變量的基本定義
(二)變量的分類
系統變量 自定義變量 邏輯變量
(三)變量的應用場合
在文本框、計算圖標代碼編輯器、顯示圖標或交互圖標中使用變量
二、函數的相關知識
函數通常指能夠實現某種指定功能的程序語句段,并通過一個代號(函數名)來表示,當程序設計過程中需要實現某一功能時,只需調用事先編寫好的具有實現該功能的函數,而無須重新編寫,這無疑有利于程序的結構化與模塊化。authorware 6.5開始支持用戶的自定義函數功能,是一個革命性的創新。
(一)函數的基本定義
(二)函數的分類
系統函數 外部擴展函數 authorware自定義函數
(三)函數的使用知識
使用authorware 6.5的內部系統函數和用戶自定義函數不需要調入,直接在計算圖標等函數使用場所內直接按格式粘貼使用即可,而外部擴展函數則需要導入,否則無法正常工作,本節將介紹常用的u32(ucd)和dll的函數導入方法步驟。
三、實例剖析
每年除夕夜人們總有“守歲”的習慣,借此總結自己一年來的得與失,迎接新的農歷年的到來。讓我們把計算機的系統時間調整為2003年1月31日,利用authorware 6.5一起來設計制作這個電子"羊年倒計時"程序。文章末尾提供源文件下載。
一、變量的相關知識
(一)變量的基本定義
變量通常是用來存儲程序執行過程中涉及的數據。變量可以存儲的數據類型有:數值型、字符型、邏輯型,當然也可以存儲以數組、列表等形式存在的數據。變量的加入,使authorware的交互編程更加靈活多變。
(二)變量的分類
在authorware 6.5中,變量可以劃分為系統變量、自定義變量和邏輯變量三種類型。這三種變量的使用一般都必須遵循一定的約定,下面就給大家具體講解一下變量類型分類的相關知識。
1.系統變量
authorware 6.5內部提供了一系列的系統變量,它們包括cmi(計算機管理教學)、decision(決策)、file(文件)、framework(框架)、general(常規)、graphics(圖形)、icons(圖標)、interaction(交互)、network(網絡)、time(時間)、video(視頻)等共11大類,如圖1所示。這些系統變量不但能夠"各司其職",完成各自的功能任務;更可以"有機結合",協同完成復雜的程序需求。
圖 1
對于某些特殊的系統變量,使用時后面要有一個"@"字符再加上一個圖標標題,例如"movable@"icontitle" :=false"的格式,這種語句稱為引用變量,此賦值語句表示在程序執行過程不允許用戶對"icontitle"圖標進行任何的移動。
提示與技巧
time(時間)類系統變量中的"fulltime"是一個非常有用的系統變量,這個變量的不同之處在于它是一個時時變化的時間變量,且不斷地隨計算機系統時間的改變而改變,正是這種特殊的變化性質,在程序交互設計中顯得十分有用。authorware本身有一個毛病,那就是在某些情況下對函數或變量的值的變化根本不起響應反應,例如某些場合下設計一個永久條件交互分支,設置返回類型為"return",響應條件表達式為a=0,那么本來程序只要在a=0條件下均會響應并執行該永久分支的內容,可恰恰authorware經常在這個時候發病,并不自動去檢測a表達式值的變化,怎么辦?此時如果我們把響應條件改為a+ fulltime=0+ fulltime,情況就大不一樣了,看上去fulltime似乎顯得多余,但正是這個不斷變化的系統變量強迫了authorware去檢查整個表達式的值而決定分支的執行與否,實在妙哉!
2.自定義變量
自定義變量是用戶根據程序設計與執行的需求而自己添加定義的變量。在authorware 6.5中可以通過調出變量分類窗口(執行菜單【window】/【variables】或快捷鍵ctrl+shift+v)后選擇【new】按鈕進行新建自定義變量操作,如圖2所示;亦可在任何的變量使用場合下直接定義變量,如計算圖標代碼編輯器里,確定后系統會自動判斷該變量為何類型變量,如果為用戶自定義則提示新建之。變量名通常用英文字母+數字來表示,但是不可以出現和系統變量或已有自定義變量同名的情況,即要保證變量名表示的唯一性,否則會出現錯誤提示,如圖3所示。
圖 2
圖 3
提示與技巧
在對自定義變量進行字符串賦值時,經常會出現字符串超長而無法直接一次性給變量賦值的情況,此時可以把長字符串拆分為幾小段,然后通過連接符號"^"把它們連接起來進行賦值,例如下列程序代碼最后longstring的值即為字符串"hello,i am rock! how are you?":
longstring:="hello,i am rock!"
longstring:=longstring^"how are you?"
3.邏輯變量
邏輯變量十分簡單,authorware系統使用的是正邏輯,即只有true(1)或false(0)兩種邏輯值代表真與假。邏輯變量經常使用于某些判斷語句或函數返回值中。(三)變量的應用場合
了解變量的類型后,我們繼續來研究變量的應用場合。一般變量在authorware中的使用場合主要可以分為以下三種情況:
1.在屬性對話框的文本框中使用變量
在設置屬性對話框中,經常會遇到條件等文本框,定義的變量即可在文本框內使用,例如圖4所示的電影圖標屬性對話框,其中的【play】域的條件文本框內即可輸入包含變量的條件表達式。類似的應用場合還包括條件響應的條件表達式等等。
圖 4
2.在計算圖標代碼編輯器中使用變量
最普遍的應用場合莫過于在計算圖標的代碼編輯器內使用變量了,這也是變量得以靈活運用的核心表現場所。變量在其中發揮了其應有的功能:存儲數據、限制條件等等,充當了authorware程序設計的重要成員角色。
圖 5
3.在顯示圖標或交互圖標中使用變量
在顯示圖標或者交互圖標內也可以進行變量的顯示與計算,如圖6所示,變量在顯示圖標或者交互圖標內"引用"都必須使用花括號{}括起來,否則系統會默認為普通文本字符串而不作為變量使用對待。若顯示變量時,需根據變量值的變化時時更新顯示結果,則需要勾選顯示圖標或交互圖標屬性的"update displayed variables"。
圖 6二、函數的相關知識
(一)函數的基本定義
函數通常指能夠實現某種指定功能的程序語句段,并通過一個代號(函數名)來表示,當程序設計過程中需要實現某一功能時,只需調用事先編寫好的具有實現該功能的函數,而無須重新編寫,這無疑有利于程序的結構化與模塊化。大部分的函數都有自己的參數,每一個參數都代表不同的意義,因此在調用函數時往往需要傳遞實際參數,告訴函數實現哪一部分功能。authorware 6.5開始支持用戶的自定義函數功能,是一個革命性的創新。
(二)函數的分類
authorware的函數功能無論大小,歸納起來有三大類型的函數:系統函數、外部擴展函數、authorware自定義函數,我們就一起來了解這方面的內容吧!
1.系統函數
authorware的系統函數有300多個,按其函數功能可分為18類:character(字符)、file(文件)、cmi(計算機管理教學)、framework(框架)、general(常規)、graphics(圖形)、icons(圖標)、jump(跳轉)、math(數學)、ole(對象鏈接和嵌入)、platform(平臺)、time(時間)、video(視頻)、language(語句)、list(列表)、network(網絡)、target(目標對象)、xtras等。如圖7所示為
圖7
2.外部擴展函數
外部擴展函數一般指第三方擴展開發商利用編程語言和開發工具如vc、bcb、delphi等開發的外部擴展u32(ucd)、dll(動態鏈接庫)、xtras,封裝在它們內部的函數可以供authorware調入使用。通常外部擴展函數都是實現一些系統控制功能,彌補authorware在某些方面的不足。在authorware 6.5的安裝目錄下就可以找到macromedia公司開發的幾款外部擴展u32(ucd)。
3.authorware自定義函數
這是authorware 6.5開始支持的一個全新的函數定義方式:它支持把某一計算圖標內的程序代碼或者是存儲于外部文本文件的程序代碼,甚至是一段字符串程序語句,authorware 6.5都支持把它們定義為函數形式,增強了程序代碼的結構化和重復使用性。如圖7流程所示,其中計算圖標"hello"的程序代碼為:
systemmessagebox(windowhandle, "hello,world!!", "information", 64)
把計算圖標"hello"的程序代碼定義為函數形式,只要快捷鍵ctrl+i打開該計算圖標的屬性對話框,勾選"contains script function"即可,其調用函數名自然就為"hello",調用函數時使用以下語句調用即可:callscripticon(@"hello")
至于外部文本文件或一段字符串的函數自定義方式和上述的是大同小異了,唯一不同的是調用時分別使用callscriptfile和callscriptstring系統函數進行調用。(三)函數的使用知識
使用authorware 6.5的內部系統函數和用戶自定義函數不需要調入,直接在計算圖標等函數使用場所內直接按格式粘貼使用即可,而外部擴展函數則需要導入,否則無法正常工作,如何導入外部擴展函數?
下面我們介紹常用的u32(ucd)和dll的函數導入方法步驟。
1.執行菜單【window】/【functions】或快捷鍵ctrl+shift+f打開函數列表窗口,在【category】函數分類列表下選擇欲導入函數的a6p或a6l文件,此時按鈕"load…"變為可用狀態。
2.單擊按鈕"load…"后選擇欲導入的函數庫,即u32(ucd)或者dll文件。
3.假如是導入u32(ucd)內封裝的函數,則會出現如圖8所示的界面,此時選擇好欲導入的函數后單擊按鈕"load"導入即可。如果要在函數列表中同時導入多個函數,可以按住"ctrl"同時用鼠標進行點選。假如是導入dll內封裝的函數,則會出現如圖9所示的界面,輸入相關的函數名和參數類型后單擊按鈕"load"即可,成功導入后在窗口的左下角有一提示信息。如此重復導入其它的dll函數,導入完畢后單擊按鈕"done"結束dll函數導入工作。
圖 8
圖 9
好,終于把authorware 6.5的變量和函數的相關知識介紹完畢,為了加深大家的印象,我們親自動手來制作一個"羊年倒計時"吧!
三、函數變量使用范例
(一)范例設計說明
每年除夕夜人們總有一個"倒計"的習慣,借此總結自己一年來的得與失,迎接新的農歷年的到來。讓我們把計算機的系統時間調整為2003年1月31日,利用authorware 6.5一起來設計制作這個電子"羊年倒計時"程序。程序執行預覽如圖10所示。
圖 10
(二)范例流程設計
"羊年倒計時"的完整程序流程如圖11所示,下面我們來剖析一下制作過程。
圖 11
1.程序初始化與背景設計
首先我們需要確定的是農歷癸未年(羊)大年初一是2003年2月1日,因此我們在計算圖標"spring festival"內首先設定此時間,輸入代碼:spring:=datetonum(1,2,2003)
其中datetonum系統函數是把時間轉換為數字表示形式,方便后面程序流程的時間比較。接著當然是設計導入一背景:顯示圖標"showtime",如何設計看讀者自己喜好。
2.時間的計算判斷交互設計
如圖11所示我們需要設計兩個條件交互分支,分別響應"到達羊年"與"未到達羊年"兩個時間判斷事件。
其中"未到達羊年"分支的響應條件設置為:year<2003|(year=2003&month<2)
即當時間未到2003年2月1日時響應,其響應分支二級流程的計算圖標"settext1"代碼如下:
chnyear:="農歷壬午年【馬】" --//當前的農歷年提示
showtip:="距農歷癸未年【羊】還有:"
nowday:=datetonum(day, month, year) --//轉換當前時間為數字表示形式
stepday:=spring-nowday --//計算距離羊年的時間間隔(數字形式)
這里的"chnyear"、"showtip"、"nowday"、"stepday"均為自定義變量,在程序執行倒計過程中存儲一些時間的相關提示信息。
而二級流程中的顯示圖標"horse"顯示的就是最后的時間倒計信息,如圖12所示,其中用文本工具寫入的是距離農歷羊年的剩余時間計算表達式,即倒計時間:
{stepday-1}天{23-hour}小時{59-minute}分鐘{60-sec}秒
為了保證這個倒計時間時時更新,當然你需要把顯示圖標"horse"的"update displayed variables"勾選上。
圖 12
繼續"到達羊年"的交互分支,其響應條件設置為:year>2003|(year=2003&month>=2)
即當時間到達2003年2月1日零點時響應,其響應分支二級流程的計算圖標"settext2"代碼如下:
eraseicon(iconid@"horse") --//擦除舊歷馬年圖標
displayicon(iconid@"showtime") --//更新背景時間顯示
chnyear:="農歷癸未年【羊】" --//當前的農歷年提示
showtip:=""
農歷羊年到啦,顯示圖標"sheep"設計導入的就是一副新年喜慶圖。
3.全部流程設計完畢,存盤后按"f12"一鍵發布,此時就可以執行測試一下咯,如圖13所示是"倒計"結束,到達羊年時的顯示界面。
圖13
源文件下載
新聞熱點
疑難解答