-
“春有花,夏有雨,秋有涼風,冬有雪”,四季的變化稱為“年”。在這個“年”的概念中,有“閏四年”的說法,也叫“閏年”。目前國際通用的公歷,平年365天,閏年366天,四年閏壹次,百年少閏壹次,第400年再閏壹次,即每400年有97個閏年。閏年的判斷算法雖然簡單,但卻是計算機編程中的經典問題,經常被程序員編制成通用函數在各種場合調用。今天我們就把它引入到Authorware 6.5中來定制壹個Authorware的閏年判斷功能!
Authorware 6.5是目前最新的版本。這個6.5新版本最引人註目的是開始支持自定義函數function,允許將內部計算圖標代碼或者存儲在外部文本文件中的腳本,甚至字符串自定義為函數——期待已久的自定義函數function終於浮現在廣大Authorware愛好者面前了!雖然Authorware 6.5的自定義函數function相對於高級語言開發平臺來說比較“幼稚”,但它的出現無疑讓Authorware腳本語句更加靈活、強大、易於管理!馬上試試吧,給Authorware寫個閏年判斷功能的版本。
計算圖標定義方法
根據內部計算圖標代碼定義函數是最基本的方法。啟動Authorware 6.5,開始創建壹個意義非凡的自定義函數——LeapYear判斷函數。
1,新項目,命名為自定義函數
新建壹個“LeapYearFunction.a6p”文件;將壹個計算圖標拖到流程線上,並將其命名為“LeapYear”,這將成為即將到來的自定義函數的名稱。函數命名需要註意唯壹性,不能和其他圖標或函數重名,否則無法正常調用和執行。
2.寫LeapYear判斷函數閏年。
目前公認的閏年判斷算法滿足以下兩個條件之壹,即閏年:
①能被4整除,但不能被100整除。
②能被4和400整除。
根據該算法,可以在程序中實現閏年的邏輯判斷。打開計算圖標“LeapYear ”,並在其中編寫以下代碼:
如果MOD(Args@"LeapYear ",400)=0|(MOD(Args@"LeapYear ",4)= 0 & amp;MOD(Args@"LeapYear ",100)& lt;& gt0)然後
Result@"LeapYear":=TRUE
其他
Result@"LeapYear":=FALSE
如果…就會結束
打開計算圖標“LeapYear”的屬性對話框(Ctrl+I),勾選包含腳本函數的選項(如圖1),意思是告訴系統將“LeapYear”封裝為自定義函數。確認後返回流程,發現計算圖標“LeapYear”的圖標發生了變化(如圖2),這樣自定義函數“LeapYear”就公布了!
圖1設置“LeapYear”屬性對話框
圖2功能“LeapYear”的圖標變化
此時執行菜單Window > Functions打開函數列表窗口,在腳本圖標分類中可以看到LeapYear自定義函數的“真身”(如圖3所示)。您可以在功能描述文本框中輸入功能描述和其他使用信息(或通過執行菜單修改>;Icon & gtDescription…輸入關於函數的信息),例如,輸入:Return:=LeapYear("Year ")。
圖3用戶定義的函數“LeapYear”
3.調用用戶定義的函數LeapYear。
函數編寫和打包的目的是服務於主程序,所以我們馬上派“LeapYear”去工作。在Authorware 6.5中,通過系統函數CallScriptIcon調用內部計算圖標的腳本模式定義的函數。我們編寫的LeapYear判斷函數是壹個返回函數,返回值為True(1)或False(0),其中True表示閏年,False則相反。
我們繼續在計算圖標“LeapYear”後添加壹個交互圖標“ShowYear”,在其右側拖動壹個計算圖標,選擇響應交互進行文本輸入,命名為“*”(即接受任何文本輸入);打開計算圖標並輸入以下代碼:
如果CallScriptIcon(@"LeapYear ",EntryText)=TRUE,則
ifleapeyear:= "是"
其他
ifleapeyear:= "否"
如果…就會結束
最後我們設置顯示界面,雙擊打開交互圖標“ShowYear”,使用文本工具輸入{ IfLeapYear },勾選“更新顯示變量”顯示屬性,保存後完成函數調用。
圖4調用自定義函數“LeapYear”
用簡單的幾步完成計算圖標腳本的自定義功能,是Authorware 6.5革命性的新功能。如果腳本存儲在外部文本文件中,這種情況下如何定義和調用函數?下面介紹壹下外部文本文件的函數定義。
文本文件定義方法
1,外部文本文件腳本編寫
由於腳本存儲在壹個外部文本文件中,當然,您必須首先創建壹個新的文本文件,比如“LeapYear”。txt”,編輯TXT文本文件並輸入以下腳本代碼:
if MOD(Args@IconID,400)=0|(MOD(Args@IconID,4)= 0 & amp;MOD(Args@IconID,100)& lt;& gt0)然後
Result@IconID:=TRUE
其他
Result@IconID:=FALSE
如果…就會結束
對比上面第壹種方法的函數代碼,妳會發現唯壹的變化就是把原來的Args @“leapy ear”換成了Args@IconID,這是為了保證函數可以被任何計算圖標調用,也就是外部文本文件的定義考慮到了函數的通用性。這個外部腳本函數是保存後完成的,也就是說,這樣定義的函數的所有腳本都存在於外部TXT文本中,比第壹種定義方法更加靈活和強大,因為Authorware提供了TXT文本的讀寫接口,允許我們在Authorware中隨時進行編輯和修改。
2.在Authorware 6.5中調用外部腳本函數。
在調用外部腳本的任何自定義函數之前,都必須對外部腳本函數中的變量進行初始化,也就是創建自變量的過程,因為Authorware沒有運行時自動創建變量的功能。
創建壹個新的“LeapYearFileMethod.a6p”文件,將壹個計算圖標拖到流程線中,命名為“initialize”,在計算圖標中輸入以下代碼:
Args@IconID:= " "
結果@IconID:= " "
當妳在輸入後關閉計算圖標代碼編輯器時,妳將被提示創建這些變量,然後妳將完成自定義函數的自變量的初始化。
3.調用用戶定義的函數LeapYear。
與計算圖標自定義函數的調用不同,外部文本文件腳本定義的函數是由系統變量CallScriptFile調用的,所以我們只需要將上面計算圖標定義方法第三步中的代碼替換為下面的代碼,其他保持不變:
如果callscriptfile(filelocation^"leapyear.txt",entrytext)=true那麽
ifleapeyear:= "是"
其他
ifleapeyear:= "否"
如果…就會結束
這樣就完成了自定義函數的調用,執行效果和計算圖標定義是壹樣的。
字符串定義模式
除了上述兩種定義函數的方法,Authorware 6.5還支持將存儲在字符串中的腳本定義為函數。這些字符串可以是文本文件中的字符串,可以是數據庫中的字符串,甚至可以是加密的字符串(使用前必須解密),不同行的字符串之間用回車(回車)分隔。比如上面提到的外部文本文件“LeapYear.txt”,我們可以使用系統函數ReadExtFile將文本內容讀入字符串變量腳本,然後作為函數調用;需要註意的是,字符串腳本函數是通過CallScriptString系統函數調用的,具體代碼如下:
劇本:= readextfile(filelocation^"leapyear.txt”)
CallScriptString(腳本)
在介紹了以上三種實現自定義功能的方式後,妳是否對Authorware 6.5的自定義功能有了更深入的了解?
相關知識-時間日歷
陽歷又稱太陽歷,是根據地球圍繞太陽的運動周期制定的歷法。陽歷的公歷年大約等於回歸年,壹年12個月。這個“月”與農歷正月無關。陽歷的月份和日期與太陽在黃道上的位置非常吻合。根據陽歷的日期,我們可以清楚地看到壹年中冷暖季節的變化。但是在每個月,妳都看不到新月,新月,新月。
目前國際上廣泛使用的公歷是陽歷(公歷)。平年365天,閏年366天,四年壹閏,百年壹閏,第400年再閏,即每400年有97個閏年。公歷平均長度距離回歸年只有26秒,累計3300年只需要壹天。下載源文件
看看這個,它能幫助妳。