用Authorware实现多信息输入窗口一次提交

2015-05-29 12:35王德铭
电脑知识与技术 2015年10期
关键词:变量函数

王德铭

摘要:在注册或登录时,一般需要用户填写多条信息,但用户习惯所有信息一次性填写完成后集中提交。要实现这一交互,直接用Authorware是不能实现的,要想实现这一操作必须用到变量、函数等相关知识,需要解决一些难点问题。

关键词: Authorware;多信息;一次性提交;函数;变量

中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2015)10-0086-02

笔者在网上经常碰到,尤其是在需要注册或登录时,往往有好多信息需要用户填写,而且人们填写时的习惯,多是在填完了所有的项目后在集中提交。

同样,在很多的自主学习或测试课件中,也有这种多信息需要输入的情况,因为程序需要记录或跟踪学习过程。这种交互式的记录信息在Authorware中必须用到“文本输入响应”。这初看起来好象很简单,可是用过Authorware的同志都知道,在Authorware中,一个文本输入交互同时只能实现一次输入,而且在写入文本后要按压回车键才能响应。所以,想利用Authorware实现多信息输入窗口时,必须是有一个输入项就要建一个文本输入交互。正因为如此,如果要想做到在用户一次性填写完所有的信息后,一次性集中提交,并且在没有提交前,要能让用户重新修改信息等等要求时,就需要解决许多的难题。

在讲解前,笔者首先把“多信息输入窗口一次性提交”的具体目标罗列如下,以清楚我们需要解决那些问题。为讲解清楚,方便理解,这里我们用“两个需要输入信息”的情况分析本课题。再多的输入要求,其制作思路是相通的。读者可以尝试练习三个以上的情况。

1)两个需要输入的信息是:“学习者姓名”(字符串)和“学习序号”(数字)。

2)两个信息必须全部需要填写,不准有空项;如果有空项,无法提交。

3)输入的过程中,不规定填写的先后次序,并保证在没有提交前可以随便修改。输入过的内容要保留在文本框中并显示出来。

4)用户在确认无误时单击回车键后,就可以提交。

5)提交上来的信息要能被程序保留起来,以便需要时可调用。

结果样式如图1所示。

下面,我结合制作过程讲解具体实现方法。

1)首先创建一个文档,保存并命名如“登录”。接着拖入一个计算图标用来定义演示窗口的大小。具体参数读者自己选择。

2)加入一个显示图标,用以标志登录画面中的输入栏位置,及要求输入内容的提示文字。参看图1样式,也可以用PS做个图片,再把图片导入到显示图标里。

3)建立第一个“文本输入” 交互(命名为“输入xm”),在其下的群组图标命名为“*”(没有引号,这是通配符,表明输入任意内容都可响应)。再在其群组图标上加一装饰(也可在群组图标里放一计算图标),双击打开,输入pintxm = EntryText@"输入xm" 。

其中EntryText 为系统变量,它记录的是用户输入的内容(字符串);pintxm 为自自定义变量,用来保存用户当下刚输入的内容,并可让程序在其后需要时调用。(由于窗口中要输入的文本内容有两项,为了准确记录两个输入的不同内容,所以要用@"输入xm"来字义EntryText记录的对象)。结果如图2所示。

4)因为这里有两个需要输入的对象,显然必须建立两个“文本输入响应”。复制刚才的文本输入交互,粘贴在流程线的下方,调整好输入文本框的位置。在“装饰”的计算中输入pintsh:=NumEntry@"输入sh"。NumEntry也是系统变量(当然,也可用EntryText变量。由于这里是用来记录“序号”的,序号量是数字量,所以用NumEntry 更为合理)。Pintsh 为自定义变量。

同时,为确保原变量pintxm 与pintsh开始输入前为“空”,所以在交互前加入了“初始化变量”的计算图标。输入的内容如图中所示。最后的程序结果如图3所示。

5)在Authorware中一个文本输入交互同时只能实现一次输入,所以现在的程序不能实现题意中的效果(只有所有输入栏全部输入内容,且在没有确认“提交”前还可以随时修改输入的内容)。为此必须再建立一个“控制交互”,以实现所要达到的控制效果。

“控制交互”为两个“热区交互”方式,并命名如“xm”和“sh”。其“热区的范围”分别对应两个文本框的区域。建立两个热区的目的:当用户在对应的热区域内单击时,就可以输入对应的内容。

在热区域属性对话框中,设交互“范围”为“永久”(确保用户可再次回来修改),“擦除”选项设为“不擦除”。但是,仅如此设置还不能达到当用户单击要重输入的文本框时,并不能保证已输过的内容显示(反选显示模式)。为此,在文本输入交互前添加一计算图标“显示上次输入内容”。在xm支路的计算图标中输入PresetEntry:=pintxm(sh支路中输入PresetEntry:=pintsh)。PresetEntry 为系统变量,当用户给该变量赋予了字符串后,则Authorware在执行下一个响应图标前显示该变量的内容。结果如图4所示。

程序到这里,可以实现“单击对应区域”输入内容了,而且还可以回头再单击以实现重复修改,或输入新内容。同时原来的内容以反显的方式存在,不会擦掉。

下面要做一个按钮交互,以实现:当用户输入了所有需要输入的窗口内容后(否则按钮为失效状态),才能单击“提交”按钮,提交信息。

6)在“交互控制”交互的右边拖入一个群组图标,并设为按钮交互。在按钮交互的属性窗口中设置“激活条件”栏内输入“tjan=1”,tjan为自定义变量,用其变量的值决定“提交”按钮激活的条件.。其目的是为了达到:在满足了提交条件(应该输入的信息内容都有“值”,不为空)的情况下,按钮有效,否则不让提交。

为此,在交互图标上加一“装饰”,用一条件语句来作判断(语句内容参看图5中)。语句中用了一个“或”判断:两个“文本输入”的值只要有一个为空,则自定义变量tjan=0(按钮不激活),否则tjan=1(提交按钮激活)可以提交。

其后,在“初始化变量”中再添加一条给自定义变量tjan赋初始值为0的赋值语句:tjan=0,即开始让按钮失效。最后的程序如图5所示。

至此,程序基本完成了。但你运行后会发现一个缺陷:每次输入一项信息后,必须单击回车一下,否则提交按钮不能被激活,这不满足一次性提交的要求(全部内容输入全后,单击一次回车键即可提交)。

造成这个情况的原因,是因为在Authorware中,文本输入响应在输入内容后必须单击回车,程序才能判断你输入的内容是否合法(即是否应该被响应)。在程序中我们可以看到(如图6所示,以xm支路为例),如果输入内容不按回车键,则支路不响应,从而变量pintxm得不到新的值(始终等于程序开始所赋的初值“空”)。这样IF条件总不能满足,tjan总为0。

另外,正如前述,人们在登录时的习惯,总爱在所有要输入的内容在窗口内输入完成后,最后一次性提交。怎样才能做到这一点呢?这里首先要明白一点:在输入响应的文本框中只要你输入了内容,即便不单击回车确认,而系统变量EntryText(NumEntry)已经有值了(记录下来了用户在交互中输入的字符串),只是我们还没有把这个值赋予给自定义变量pintxm和pintsh而已因此。现在要解决的问题是:在任一输入窗口内按压回车键后都能给pintxm和pintsh赋值。

首先可能想到的是:在每个输入交互下的 “装饰”计算图标中,不光为本交互的记录变量赋值,

而是为所有的记录输入内容的变量赋值,从而达到一次性赋值的目的。结果如图7所示。这样是能实现了,然而这个例子中只有两个输入项,这样程序并不显得复杂。可是,如果有较多的输入,那么依此法我们就要做较多的重复性工作,并且程序也显复杂了。

既然需要在每个支路下都添加了相同的赋值语句,那么就可以把它放在一个公共的支路上同时赋值。所以,可以把所有的赋值语句:pintsh:=NumEntry@"输入sh"和pintxm:=EntryText@"输入xm"在原支路中删掉,复制到“交互控制”的交互图标的“装饰”里。完成后的程序如图8所示。最终的运行效果如图9所示。完成了我们要实现的目标任务。

猜你喜欢
变量函数
二次函数
抓住不变量解题
二次函数
函数备考精讲
也谈分离变量
素变量混合幂丢番图逼近
SL(3,3n)和SU(3,3n)的第一Cartan不变量
分离变量法:常见的通性通法