"春有百花夏有雨,秋有凉风冬有雪",四季更替谓之"年",在这"年"的概念里隐藏着一个"四年一闰"的说法,也就是所谓的"闰年"。现在世界通行的公历,平年365天,闰年366天,每四年一闰,每满百年少闰一次,到第四百年再闰,即每四百年中有97个闰年。闰年的判断算法虽然简单,却是计算机编程里的一个经典问题,常被程序员编制为通用函数进行各种场合的调用,今天我们就把它引入到Authorware 6.5里,定制一个Authorware的闰年判断函数!
Authorware 6.5是目前的最新版本,在这个6.5新版本中最引人注目的就是开始支持自定义函数功能,它允许把内部计算图标代码或者存储在外部文本文件的脚本,甚至是字符串自定义为函数--盼望已久的自定义函数功能终于浮现在广大Authorware爱好者面前!虽然相对于高级语言开发平台来说,Authorware 6.5的自定义函数功能显得相对"幼稚",但是它的出现无疑使Authorware的脚本语句变得更加灵活强大,易于管理!我们马上来尝尝鲜,编写一个闰年判断函数For Authorware版本。
计算图标定义方式
根据内部计算图标代码定义函数是最基本方法,启动Authorware 6.5,开始创建一个具有非凡意义的自定义函数--闰年判断函数LeapYear。
1、 新建工程,命名自定义函数
新建一个"LeapYearFunction.a6p"文件;拖动一个计算图标到流程线上,并命名为"LeapYear",这个名字将成为即将诞生的自定义函数的名称。函数命名需要注意唯一性,不能和其它图标或者函数同名,否则将不能正常调用执行。
2、 编写闰年判断函数LeapYear
目前公认的闰年判断算法,满足下列二者之一,即为闰年:
① 能被4整除,但不能被100整除
② 能被4整除,且能被400整除
根据这个算法,我们就可以在程序中实现闰年的逻辑判断。打开计算图标"LeapYear",在里面写入以下代码:
if MOD(Args@"LeapYear",400)=0|(MOD(Args@"LeapYear",4)=0 & MOD(Args@"LeapYear",100)0) then
Result@"LeapYear":=TRUE
else
Result@"LeapYear":=FALSE
end if
打开计算图标"LeapYear"的属性对话框(Ctrl+I),把Contains Script Function选项勾上(如图1),这意味着告诉系统把"LeapYear"封装为自定义函m.tulaoshi.com数。确定后返回流程,发现计算图标"LeapYear"的图标变化了(如图2),这样自定义函数"LeapYear"就宣告诞生!
图1设置"LeapYear"的属性对话框
图2 函数"LeapYear"的图标变化
此时执行菜单Window Functions打开函数列表窗口,在Script Icons分类中就可以看到LeapYear自定义函数的"真身"(如图3),你可以在函数描述(Description)文本框里输入函数说明和其它使用信息(也可通过执行菜单Modify Icon Description…来输入函数相关说明信息),例如输入:Return:=LeapYear("Year")
图3 自定义函数"LeapYear"
3、 调用自定义函数LeapYear
函数编写封装的目的就是为主程序服务,我们立马派遣"LeapYear"上岗。Authorware 6.5中是通过系统函数CallScriptIcon来调用内部计算图标脚本方式定义的函数的。我们编写的闰年判断函数LeapYear为一返回型函数,返回值为True(1)或者False(0),True表示为闰年,False则相反。
我们继续在计算图标"LeapYear"后添加一交互图标"ShowYear",拖动一计算图标到其右边,选择为文本输入响应交互,并命名为"*"(即接受任何文本输入);打开该计算图标并输入以下代码:
if CallScriptIcon(@"LeapYear",EntryText)=TRUE then
IfLeapYear:="是"
else
IfLeapYear:="否"
end if
最后我们设置一下显示界面,双击打开交互图标"ShowYear",用文本工具输入{ IfLeapYear },并勾选"Update Displayed Variables"显示属性,存盘后即完成函数的调用工作。
图4 调用自定义函数"LeapYear"
简单的几个步骤就完成计算图标脚本的自定义函数工作,这实在是Authorware 6.5的一个革命性新功能。如果脚本是存储在外部文本文件里,这种情况该如何定义和调用函数呢?下面我们介绍一下外部文本文件的函数定义方式。
文本文件定义方式
1、 外部文本文件脚本准备工作
既然脚本存储在外部文本文件里,当然首先得新建一个文本文件,例如"LeapYear.txt",编辑该TXT文本文件并输入以下脚本代码:
if MOD(Args@IconID,400)=0|(MOD(Args@IconID,4)=0 & MOD(Args@IconID,10012下一页