首页 > 网站 > 媒体动画 > 正文

Authorware开发实例:authorware7程序设计教学文章--编制程序实际示例:绘制数字计

2024-09-08 19:26:06
字体:
来源:转载
供稿:网友
可以使用“擦除”设计图标代替“擦除表针”设计图标。只需在设计窗口中分别将上述3个设计图标拖放到“擦除”设计图标上就可以达到擦除所有表针的目的。

最后,在程序末尾增加一个【运算】设计图标,将其命名为“下一循环”,双击打开该设计图标,在【运算】窗口中输入程序语句

goto(iconid@"绘制秒针")

当程序执行到此设计图标时,将跳转到“绘制秒针”设计图标,开始下一轮绘制工作。为了使【演示】窗口中能够时刻显示当前的系统时间,在“time”设计图标的属性检查器中打开“update displayed variables”复选框。

至此,所有设计工作全部完成,整个程序的流程如图3-66所示。运行程序,可以看到【演示】窗口中时刻显示出当前的系统时间,并且时钟的表针也在根据系统时间的变化不停地走动。

由于在程序中根据表盘的位置与大小对表针的位置和长度进行了灵活地处理,因此读者可以在“表盘”设计图标中自由的绘制各种形状的表盘,而不必对绘制表针的程序流程进行任何修改。chapter03文件夹下的范例程序clock2.a7p和clock3.a7p就采用了两种其他类型的表盘,如图3-67所示。

 

图3-66  流程图

      

图3-67  clock2.a7p与clock3.a7p

3.9  编程实例:制作数字计时器

在一些测验、竞赛、游戏程序中,经常需要使用计时功能,统计使用者用去的时间,或者以倒计时方式控制程序的进行过程。本例通过aws语言实现两种计时器:正计时器显示用户已经用去的时间,倒计时器显示程序给用户留下的时间。这两种计时器都可以非常方便地用于任何authorware程序中。本例使用了以下系统函数和变量:

1.系统函数

(1)int(x):获取实数x的整数部分。

(2)mod(x, y):获取x除以y所得的余数。如果参数x和y都是整数,则余数也是整数。

2.系统变量

systemseconds:包含计算机从启动到目前为止所经过的时间,即系统运行时间(注意不是windows系统时间,系统时间对应于变量fulltime),以秒为单位。

与本例对应的范例程序是chapter03文件夹下的timer.a7p。

 

进入authorware,创建一个新的程序文件。

1.变量初始化

使用变量面板创建3个自定义变量:timecount,timestart和timeend。timecount用于设置计时过程的持续时间,以秒为单位。timestart用于保存计时过程的开始时刻。timeend用于保存计时过程的结束时刻。

向流程线上添加一个【运算】设计图标,将其命名为“初始化”,如图3-68所示,在这个设计图标中,对本程序使用的自定义变量进行初始化操作。向“初始化”设计图标中输入以下程序语句。

图3-68  计时过程初始化

timecount:=100                                       --将计时长度设置为100秒

timestart:=systemseconds                        --记录当前时间,即计时过程的开始时刻

timeend:=systemseconds+timecount              --计算计时过程的结束时刻

2.倒计时过程

现在将倒计时过程及其显示过程放在一起。

向流程线上添加一个【显示】设计图标并将其命名为“倒计时”如图3-69所示。打开该设计图标,利用文本工具向【演示】窗口中添加如图所示的文本对象。

   

图3-69  创建倒计时过程

文本对象的内容就是倒计时的计时过程。倒计时过程由时、分、秒三部分计算过程组成。

(1){int((timeend-systemseconds)/3600)}

计算倒计时过程的小时部分。由计时结束时间减去当前系统运行时间,得到计时过程的进行时间,再除以每小时的秒数(3600),获得计时过程的小时部分。这一数值由整数部分和小数部分组成,因此再通过系统函数int()获取其整数部分。

(2){int((mod(timeend-systemseconds),3600)/60)}

计算倒计时过程的分钟部分。计时过程的进行时间除以每小时的秒数,商的余数部分就是除去小时部分之后的剩余时间,将剩余时间除以每分种的秒数(60),获得计时过程的分钟部分,再通过函数int()获取其整数部分。

(3){mod(int(mod((timeend-systemseconds),3600)),60)}

计算倒计时过程的秒钟部分。首先通过int(mod((timeend-systemseconds),3600))获得除去小时部分之后的剩余时间的整数部分,再除以每分钟的秒数60,获得的余数就是倒计时过程的秒钟部分。

在文本对象中将以上3个表达式计算结果通过“:”相连。为了使这些数值能够即时更新,在【设计】窗口中选择“倒计时”设计图标,执行modify>icon>properties菜单命令,在设计图标属性检查器中选择update displayed variables选项。

3.格式化显示内容

在默认情况下,authorware在显示文本对象中的数值时并不显示前置0,即将数值1显示为“1”,而不是“01”。在倒计时程序中,应该使时、分、秒数值以小于10时显示前置0,即始终显示两位数字。双击“倒计时”设计图标,打开【演示】窗口,在其中选择包含倒计时过程的文本对象,然后执行text>number format菜单命令,打开【number format】对话框,如图3-70所示,在【leading zero to place】属性中,将前置0的位置设置为2。

为文本对象应用digifacewide字体,并调整其大小和位置。运行程序,此时倒计时时钟已经可以工作了,如图3-71所示。

   

                图3-70  规范时间的显示格式      图3-71  开始倒计时

4.正计时过程

向流程线上添加一个【显示】设计图标并将其命名为“正计时”。打开该设计图标,利用文本工具向【演示】窗口中添加如图所示的文本对象,如图3-72所示。

   

图3-72  创建正计时过程

正计时过程也是由时、分、秒三部分计算过程组成。每部分计算过程的工作原理与倒计时过程是类似的,但是需要通过systemseconds-timestart替换倒计时过程中的timeend-systemseconds。文本对象的完整内容是:

{int((systemseconds-timestart)/3600):int(mod((systemseconds-timestart),3600)/60):

mod(int(mod((systemseconds-timestart),3600)),60)}

同样通过设计图标属性检查器将“正计时”设计图标设置为update displayed variables方式,然后按照第3个步骤中的方法,设置正计时文本对象的显示格式,如图3-73所示。

图3-73  两种计时过程同时进行

5.第3种计时过程

第3种计时过程由等待设计图标进行,用于控制程序在经过100秒钟的计时过程之后自动退出。向流程线上添加一个【等待】设计图标和一个【运算】设计图标,如图3-74所示。双击等待设计图标打开属性检查器,在其中将等待时间设置为timecount,然后打开【show countdown】复选框,即显示authorware倒计时时钟。

   

图3-74  第3种计时过程

 

将运算设计图标命名为“退出”,并向其中输入程序语句:

quit()

程序运行时【演示】窗口中就会显示出authorware倒计时钟,这时可以将其拖放到窗口右下角位置。经过100秒之后,程序执行“退出”设计图标之中的程序语句,结束程序的运行。

本例至此制作完毕。以后读者就可以直接将包含有计时过程的【显示】设计图标复制到其他程序中使用。只需为自定义变量timecount赋予初始值,文本对象就能正确显示出计时过程。由于两种计时过程中都包含大量的运算,因此不要在同一程序中同时使用这两种计时过程,否则可能会导致计时过程出现延迟现象。

为方便读者进行测试,范例程序timer.a7p带有一个输入界面,由读者自行设置计时长度(以秒为单位)。同时在“初始化”设计图标中将变量timecount初始化为:

timecount:=numentry

如图3-75所示,在文本框中输入数值并回车之后,就可以看到两种计时过程。

     

图3-75  设置计时长度

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表