前面我们学习了使用“开始”旗帜和“停止”旗帜来调试程序,来跟踪程序的执行流程。对于简单应用程序我们可以使用旗帜来定位错误的产生位置和程序的运行方向。对于authorware的可视化编程手段,简单的程序流程我们还可以判断并跟踪。但对于采用复杂交互和复杂分支结构的应用程序,简单地依靠authorware的可视化编程的便利来跟踪程序的流程是远远不够的,基于这个原因,authorware为用户提供了一个功能窗口,即跟踪窗口。提供跟踪窗口的目的就是为了方便程序的调试。
跟踪窗口主要用来显示authorware在执行程序的过程中所遇到的设计按钮的相关信息。如果程序的分支结构特别复杂,或者程序执行得太快以至于我们很难看得清楚,此时跟踪窗口将是我们能力的延伸,可以帮助我们来调试复杂的或运行很快的应用程序。
打开跟踪窗口的方法是:选择authorware中【窗口】菜单中的【控制面板】命令(快捷键为【ctrl+2】),弹出控制面板。单击控制面板最右边的【跟踪】命令按钮弹出跟踪窗口。
跟踪窗口和控制面板连接在一起成为组合窗口,该组合窗口是一个浮动窗口,可以用鼠标调整到屏幕的任意位置,也可以像改变其他windows 窗口一样通过拖曳窗口的四边和四角来任意改变窗口的大小。
当我们沿程序流程线来跟踪authorware作品时,将会遇到“等待”设计按钮、“交互作用”设计按钮、“框架”设计按钮等需要用户输入交互响应的设计按钮。该跟踪窗口会自动停下来,等候用户与程序的对话,然后从该处继续执行跟踪任务。
在跟踪窗口有6个功能按钮,下面请读者来逐步学习这6个功能按钮在跟踪窗口中的作用,如图7-2所示。
图7-2 跟踪窗口中的功能按钮
1)从“开始”旗帜处重新开始:使用该功能按钮,跟踪窗口将从程序流程线上的“开始”旗帜所在位置重新开始跟踪。快捷键为【ctrl+alt+r】。
2)从“开始”旗帜重新设置跟踪窗口:如果“开始”旗帜已经放置到流程线上,则单击该功能按钮,跟踪窗口便从“开始”旗帜处重置跟踪。
3)单步跟踪:如果是一个分支结构或者是一个“映像”设计按钮,则单击该按钮,authorware将执行分支结构或“映像”设计按钮中的所有对象,而不是一个设计按钮一个设计按钮地执行。在使用该功能按钮时,在跟踪窗口只显示“映像”设计按钮的图标,以及包含“映像”设计按钮名和进入、退出该“映像”设计按钮记录的信息列表。
提示:单步跟踪功能在调试中,有助于接近问题的所在。快捷键为【ctrl+alt+dnarrow】。
4)进入跟踪:该功能按钮用于在流程线上更精确地跟踪,如果是一个分支结构或者是一个“映像”设计按钮,单击该按钮,则authorware将进入分支结构或“映像”设计按钮中,一个设计按钮一个设计按钮地执行。在使用该功能按钮时,跟踪窗口会显示所有设计按钮的信息。
提示:进入跟踪功能在程序的调试中有助于发现问题的所在,快捷键为【ctrl+alt+→】。
5)跟踪开关:该功能按钮控制跟踪信息的显示与否,即使是在跟踪的时候,该功能按钮仍然可用。在调试的过程中,我们可能只对某一部分的信息有兴趣,则可以将该按钮关上,关闭跟踪信息。事实上,建议设计者将该功能按钮一直打开,又不会影响程序的执行效果,信息当然是越多越好。还是让跟踪窗口打开的好。
6)显示不可见的信息:在该功能按钮打开的情况下,程序在展示窗口上可以显示某些不能显示的内容,例如目标区等。当该按钮关闭时,程序不显示这些不可见的内容。
上述控制面板和跟踪窗口功能按钮的功能我们可以在authorware中【调试】下拉菜单中找到相应的命令选项。我们在程序的调试过程中,既可以使用控制面板上的功能按钮,也可以使用菜单命令,还可以使用快捷键。作为一个专业的编程人员,建议设计者将各功能按钮的快捷键多加熟悉。在编程和调试过程中,设计者会发现,熟练地使用快捷键会大大地节省时间,提高程序设计的效率。
在跟踪窗口中,跟踪窗口的6个功能按钮下是将要执行的设计按钮的图标,包括该设计按钮的名称。功能按钮下为将要执行的设计按钮的图标和名称,读者可以根据该区域的内容来判断当前程序执行到流程线上的位置。如现在将要执行的图标是“输入目标0-100”的交互图标。
最下方的区域是已经执行过的设计按钮的信息:
“1:dis:箭头
1:dis:靶子
1:int:输入目标0-100 (enter)
信息的通用格式为:number:“class”:“title”,下面让我们来介绍各符号的含义。
① number:该符号代表的是设计按钮在程序流程线上的级别。最先的流程线级别为“1”。通过该信息,我们可以定位该设计按钮在流程线上的层次。
注意:当设计按钮包含在流程线上的“群组”设计按钮中的时候,就产生了流程线级别的概念,例如,如果一个“群组”设计按钮在最初的设计窗口流程线上,则该“群组”设计按钮的流程线级别为1级,而包含在该“群组”设计按钮内的设计按钮的流程线级别为2级,依次类推。
②“class”:该符号显示的是该设计按钮所属的类别,这一类别是设计按钮的缩写。
表7-1为authorware中所有设计按钮类型名称及其缩写。
表7-1 设计按钮类型及其在跟踪窗口中的缩写
设计按钮类型名称 | 设计按钮类型缩写 |
disply【显示】设计按钮 | dis |
motion【移位】设计按钮 | mtn |
erase【擦除】设计按钮 | ers |
wait【等待】设计按钮 | wat |
navigate【定向】设计按钮 | nav |
framework【框架】设计按钮 | frm |
decision【判定】设计按钮 | des |
interaction【交互】设计按钮 | int |
calculation【运算】设计按钮 | clc |
map【群组】设计按钮 | map |
digital movie【数字化电影】设计按钮 | mov |
sound【声音】设计按钮 | snd |
anolog video【模拟视频】设计按钮 | vod |
③“title”:该符号显示的是设计按钮的标题。在前面的学习中我们强调过给设计按钮一个描述性标题的重要性,通过设计按钮的标题,不仅可以用来注释流程线,而且对跟踪窗口也是非常有帮助的。用各设计按钮有效的描述性标题,我们可以更有效地利用跟踪窗口。
关于enter/exit(进入和退出)跟踪信息的说明如下。
让我们以一个实例来理解该内容,如图7-3所示。
图7-3 跟踪信息窗口
读者可以在“进入或退出跟踪信息”中看到如下内容:
1:dis:靶子
1:int:输入目标0-100 (enter)
1:clc:
1:mtn:箭头移动
1:dec:判断 (enter)
请读者对照图7-4中的程序流程结构,我们可以看到以下内容。
图7-4 飞向靶心流程图
第一条信息对应于进入标题为“靶子”的“显示”设计按钮。
第二条信息对应于进入标题为“输入目标0-100”的“交互作用”设计按钮,所以在第四个区域有信息“(enter)”。
第三条信息对应于“输入目标0-100”的“交互作用”设计按钮分支结构中的“运算”设计按钮。
第四条信息对应于进入标题为“箭头移动”的“移动”设计按钮。
第五条信息对应于进入标题为“判断”的“决策”设计按钮,所以在第四个区域有信息“(enter)”。
由此可见,进入或退出信息表示程序流程是进入还是退出“群组”设计按钮或“交互作用”设计按钮等具有分支结构的设计按钮结构中。
使用跟踪变量来跟踪管理变量。
跟踪窗口并非仅仅能跟踪authorware执行到流程线上的位置,还可以用来跟踪应用程序中变量的值,跟踪变量的过程比跟踪设计按钮的过程要复杂得多。但是,在实际的程序设计和调试过程中,由于变量的赋值而产生的错误是导致程序错误一大主要原因,所以,我们在程序的调试过程中要注意变量的赋值。
为了说明如何使用跟踪窗口在authorware的应用程序运行时跟踪变量的值,我们仍以实例“飞向靶心”中的程序为原型来说明该问题。
在实例中,程序的逻辑结构如图7-5所示。我们引入了自定义变量p,p变量的值是通过“交互作用”分支结构中的正文输入响应让用户输入数值,然后通过一个“运算”设计按钮赋值给变量p。我们可以在跟踪窗口中跟踪该变量在程序执行过程中的赋值内容。
为了实现该功能,我们需要在源程序上加上某些内容。
提示:所添加的内容对源应用程序的运行和效果没有任何影响。
为了实现在跟踪窗口中跟踪指定的变量的值,我们首先要知道,跟踪窗口并非要检测和显示所有应用程序中的变量,跟踪窗口只显示开发人员指定的变量的信息,如何来指定要检测的变量呢?
在学习如何实现该功能之前,先来看一个函数“trace”。
函数的语法格式:trace("string")。
该函数的作用就是将需要在跟踪窗口中显示的变量值在跟踪窗口中显示出来。使用的方法是,在程序设计人员预期要发生变量值变化的地方,放置一个“运算”设计按钮,在“运算”设计按钮对话框中输入trace函数,则当应用程序运行到该设计按钮后,authorware不会对程序结果产生任何影响,只是将该trace中的变量值的信息在跟踪窗口中显示出来。在跟踪窗口中显示的变量值形式为:
--45
在连续两个连词符后是变量的值。
该实例具体的实现过程如下所述。
1)如图7-5所示,在源程序的基础上,在我们预期变量值要改变的两个地方分别加上了两个“运算”设计按钮。
图7-5 加跟踪变量的流程图
因为我们要监测变量p的值,则我们在两个“运算”设计按钮中输入相同的内容,输入内容为:“trace(p)”。
2)运行该程序,读者可以在展示窗口中输入目标值,然后继续运行。读者可以看到在跟踪窗口中,该变量的值出现了两次,如图7-6所示。
图7-6 加跟踪变量的信息窗口
我们设置了两个内容为trace函数的“运算”设计按钮,所以在跟踪窗口中,变量p的值出现了两次。
提示:authorware不像c语言等编程语言,可以动态地监测变量的值,所以我们要在跟踪窗口中监测变量的值,需要首先预测变量值有可能变化的地方,然后在变化的位置设置一个内容为trace函数的“运算”设计按钮,从而可以在跟踪窗口中显示一次变量的值。要想多次跟踪该变量,必须设置多个“运算”设计按钮。
变量值前以两个连字符来表示是变量值。
当然,我们在交互图标右边的计算图标中要输入:“p:=entrytext”,当程序要求用户输入时,你输入20,则变量p的值也为20,如图中显示的那样。
另外一种监测变量值的方法是使用disply“显示”设计按钮来显示变量的值。使用该方法可以在展示窗口中动态地监测变量的值的变化。
将变量名嵌入到“显示”设计按钮中。具体的步骤如下。
1)在流程线上你想在执行作品的位置前面插入一个“显示”设计按钮。如果读者要从起点运行应用程序,则需要将该“显示”设计按钮放置到流程线的顶端。如果读者想从一个“开始”旗帜来开始运行,则要把“显示”设计按钮放置到“开始”旗帜所在位置之下。
在该实例中,我们将“显示”设计按钮放置到流程线的顶端,命名为“监测变量”。
2)双击打开该“显示”设计按钮,在“显示”设计按钮中插入变量名。在该实例中我们插入“目标{p}”。
3)选择authorware中的【修改】→【图标】→【属性】命令,打开“属性”对话框(为了加快速度,读者可以使用快捷键【ctrl+i】)。
4)在对话框中选择“选项”选项列表中的“更新显示变量”选项。
5)为了使该变量的显示内容一直显现在展示窗口中,我们在该对话框中的“层”正文输入框中输入在该应用程序中最高级别的层级,我们输入层级6。则在程序的运行过程中,该变量变化的值会一直显示在展示窗口中,除非用“擦除”设计按钮来擦除。
6)现在我们运行程序来看一看运行的效果。在程序运行的展示窗口中永远显示出变量p的值,而且该变量显示的值随变量值的变化而实时变化。
提示:在程序的调试过程中,使用在“显示”设计按钮中插入变量来监测变量的值是最方便的,我们可以随时监控变量值的变化,而不用像使用跟踪窗口一样来预测值的变化,然后再插入“运算”设计按钮。使用该方法,当程序调试结束后,仅需要删除一个“显示”设计按钮即可。
使用该方法,我们不仅可以通过名称跟踪不止一个变量,而且不需要记住跟踪变量的顺序。
综上所述,在程序的调试过程中,使用在“显示”设计按钮中插入变量来监控变量的值是最方便和灵活的方法。
在结构比较复杂的编辑中,用的图标多了,为了调试方便,经常使用“开始”与“停止”图标,有时会出现不知道这两个图标去向的情况,这时只要用鼠标在左侧工具栏的原位置处单击便可以快速找回“开始”或者“停止”图标。
新闻热点
疑难解答