形象化的多媒体软件主调用程序设计
蔡 菁 武汉交通科技大学
一个较大的软件系统通常分成若干模块,然后通过主调用程序从外部调用集成。直接使用一些调用函数,可以做出一个非常简单的调用程序,但无法达到生动、有趣、形象的效果,而这些特性却是多媒体软件应该必备的。Authorware是广泛应用的多媒体软件创作工具。本文将介绍如何充分运用Authorware的动画及交互功能设计出比单纯的文字或图形更具说服力的主调用程序。
1. 主调用程序的构想
假定用Authorware 设计某课程的多媒体学习软件,该课程包括十大单元的学习,其主调用界面如图1所示。
首先将图1中间的一整幅地图分割为十个部分,每部分图象的位置状态反映一个单元的学习调用情况。系统运行之后,如果某部分图象被移动分散出去则说明对应于该图象的单元还没有学习完毕;如果仍就居于地图的原位置则说明该单元已经学习完了;如果被分散出去的图象部分经过学习重新又回到中间地图的原位置,则表示本次学习完成了该单元的学习。
系统初次运行时,图1的界面显示停留一会后,分割的地图的十幅图象便四散开来,分别移动到相应的单元目录上,主调用界面变化成图2的样式。说明初次使用该学习系统,每个单元都还没有学习过。
若完成某个单元的学习,其对应的那部分图象便会自动回到地图中的原来位置。假定现在已完成了第一、第四、第七、第十个单元的学习,主调用界面就变化成图3的样式。并且即使退出系统下次重新进入系统继续学习,主调用界面依然呈现出图3的样式,只有那些没有学习的单元所对应的图象这次才会分散移动到相应的单元目录上,已经学习过的单元对应的图象则不会移动,这样就便于使用者了解哪些内容学习过,哪些内容还没有学习。当完成所有内容的学习,则分散的地图又重新拼成一幅完整的图形,回到图1样式的主调用界面。
2. 主调用程序的设计
根据前面的构思,主调用程序的程序流程如图4所示。从功能上来说主要包括四大部分,即页面布置、图形分散、程序调用和图形聚合。
下面对此程序的设计过程作一简要介绍。
1. 设置背景:拖动一个[显示]图标到流程线上,命名为“background",双击打开,引入底图,此图为整个程序运行时的背景,如图1中的海水底图。
2. 布置桌面按钮:拖动一个[映射]图标到流程线上,命名为“button",在其内层再通过一组[显示]图标引入需在桌面上布置的按钮样式。
3. 分割图形:拖动一个[映射]图标到流程线上,命名为“part", 在其内层再通过加入一组[显示]图标将分割好的图形的各个部分引入。
至此,页面布置的工作完成。
4. 拖动一个[运算]设计图标到流程线上,命名为“read text", 双击打开,加入相应代码,参见图5 。用意是读入外部存盘文件save.txt,其形式参见图6所示,从第一到第十每个单元各占据一行,分别用save1~save10是=0还是=1保存了每一单元是否学习完毕的信息,初值都为0,表示都未学习过。根据外部存盘文件的有关信息对系统的相应变量赋值,以便下面判定需要将哪一部分图象分散开去,以便后面在每个单元学习结束时判定是否需要进行图象的聚合。变量save11~save101分别记录上一次进入系统时,即本次学习之前从第一到第十每个单元是否学习完毕的信息,例如,若save21=1 则说明第二个单元已经学习过了。
5. 拖动一个[映射]图标到流程线上。命名为“move1",其作用为根据代表每一单元学习情况的相应变量的状态,将未学习单元相应的图象部分分散开来。在其内层对每一学习单元加入一[运算]图标(设置参见图7),及一[移动]图标(设置参见图8)。在[运算]图标内判断代表本单元学习情况的相应变量的值是否为1。若为1,表示本单元已经学习完毕,其相应的图象部分不需要做任何移动,因而转去执行对下一单元继续进行相应判断的图标;若不为1,表示本单元还没有学习完毕,则顺序执行[移动],即将本单元相应的图象部分分散出去;
至此,图形分散的工作完成。
6. 在流程线上放置一[交互作用]按钮,命名为“interaction”。在“interaction”右侧放置一系列[映射]设计图标。完成对第二步“button”图标中所设置的桌面各按钮的响应,实现对各单元学习内容的调用。[Response Type]可设为[Hot spot]或其他适合的方式。在各学习单元的映射图标内层,可设置新的桌面按钮显示样式,并通过一[运算]图标,使用JumpFileReturn()函数跳转到相应学习单元对应的文件去执行,实现调用分程序的功能。
当用户退出对该文件的执行,即从各单元的学习回到主调用程序时,必须经历一[运算]图标,完成退出的工作,其代码参见图9,若本单元学习完毕,则读入外部存盘文件save.txt,并修改对应于本单元的相应信息,例如第二单元若学习完毕,则将文件save.txt的第二行修改为“save2=1”,然后将相应信息写回文件save.txt,最后调用函数Quit(0)返回主调用程序。
至此,程序调用的工作完成。
7. 拖动一[运算]设计图标到流程线上。命名为“2read text", 双击打开,加入相应代码,参见图10 。重新读入外部存盘文件save.txt,根据其每一行的当前信息对系统的相应变量赋值,因为用户的学习情况可能不断发生新的变化,过程6中可能对外部存盘文件save.txt的某些信息作了改变,变量save1~save10分别记录从第一到第十每个单元当前的学习信息,后面的程序需要根据新的信息,随时动态调整分散的图象,将已学习的相应部分聚合。
8. 拖动一个[映射]图标到流程线上。命名为“move2",其作用为根据代表每一单元学习情况的相应变量的状态,将本次学习完毕的单元相应的图象部分重新聚合起来。在其内层对每一学习单元加入一[运算]图标(参见图11),及一[移动]图标(参见图8)。在[运算]图标内,判断是否以前已学习“save11”和是否在本次学习“save1”两标志变量。若save11=1则表示以前已学习过本单元,则在系统进入图形分散的过程中根本就不会分散,因为只有未学习的单元的图象部分才会分散出去,所以就用不着再聚合起来;若save1<>1则表示本单元还没有学习完毕,也用不着聚合,所以以上两种情况都用不着聚合,即都用不着执行[移动],只需转去执行对下一单元进行相应判断的图标。
至此,图形聚合的工作完成。
9. 拖动一个[运算]设计图标到流程线上。命名为“end”, 双击打开,加入如下代码 :GoTo(IconID@"interaction"),其作用是返回到交互响应图标,等待用户进行新的学习选择。
主调用程序的设计也随之完成。