主要内容
在该实例中,我们引入了数字化电影和声音文件等媒体信息,程序的最终结果如图10-1所示。图中的圆形问号区域是数字化电影的第一帧。
该程序的功能是当最终用户将鼠标移动到图10-1所示 问号所在的圆形区域中时,播放问号的数字化电影。当我们用鼠标单击该区域时,问号飞快地移动到展示屏幕外,一旦我们在一定时间内没有任何动作的话,程序会显示一个声音和文本信息来引起读者的注意。
图10-1 程序最终结果展示画面
该实例的目的是让读者熟悉authorware如何引入各种媒体来综合编程,对不同的媒体有其特有的引入方式和控制方式。在该实例中我们学习数字化电影和声音媒体的引入。同时,学习【交互作用】分支结构的设计,使用热对象来创建响应分支。同时学习对显示对象运动的控制。
基本操作提要
在该实例中我们使用了authorware提供的如下内容:
【数字化电影】设计按钮用来引入数字化电影,并对电影的播放进行控制。
【声音】设计按钮用来引入声音信息,并对声音的播放进行控制。
【交互作用】分支结构可以根据用户不同的响应来进入不同的反馈分支,执行不同的反馈内容。
【热对象】响应方式。
【移位】设计按钮用来实现将问号飞快地移动到展示屏幕外。
【运算】设计按钮用来输入源程序并进行相关的设置。
【等待】设计按钮。
逻辑运算符和系统变量的使用。
实例过程
步骤1:建立新文件,设置展示窗口:
图10-2 【properties】对话框设置
(1) 使用authorware的【file】>【new】>【file】命令选项(快捷键为ctrl+n),或者使用工具栏中的【new】命令按钮来打开一个新的设计窗口。
(2) 使用authorware的【modify】>【file】>【properties】命令选项(快捷键为ctrl+shift+d),弹出【properties】对话框,如图10-2所示。在该对话框中的相关设置如下:
(3) 在【size】下拉列表中选择【variable】选项,使展示窗口是可以由用户来调整的。
其它的选项均如图10-2所示来设置。
(4) 单击【ok】命令按钮结束该对话框的设置。
提示:
当我们在【properties】对话框的【size】下拉列表中选择【variable】选项时,则在程序设计过程中,用户可以调整展示窗口的大小,最终展示窗口的大小以读者最后一次调整的大小为准。
步骤2 进一步调整展示窗口的大小和位置,具体内容见实例9。
步骤3 引入数字化电影,在展示窗口中插入问号数字化电影:
(1) 拖曳一个【数字化电影】设计按钮到程序的主流程线上,命名为“问号”。
(2) 双击打开该设计按钮的【movie】对话框,如图10-3所示。单击该对话框中的【import】命令按钮弹出【import file】对话框来引入【数字化电影】文件。
图10-3 【movie】对话框的设置
(3) 该对话框中的相应选项设置内容如图10-3所示。显示模式设置为【matted】。
该电影为内部文件,由于没有光盘的发行,读者可能没有该数字化电影文件,不过,没有关系,读者可以在这里引入任何一个数字化电影。该实例仅仅是让读者学习authorware所提供的各种功能的使用,不必要刻意追求与书本实例的相同。
(4) 单击【timing】命令按钮,弹出如图10-4所示的对话框。
图10-4 【timing】对话框
该对话框中相关选项的设置如下:
在【concurrency】:选项列表中选择【perpetual】选项。
在【play】:选项列表中选择【fixed number of times】,按照设定的播放次数来播放。
该正文输入框中输入播放次数: 1 。
【播放速率】:正文输入框中输入20 ,含义是每秒播放20帧。
选择【play every frame】选项,播放数字化电影中所有的帧。
在【start frame】和【end frame】正文输入框中输入的是播放数字化电影的起始帧和终止帧。在这里我们输入两个变量:startqi和endqi。
技巧:
在控制数字化电影或声音等媒体信息时,我们可以在其属性对话框中输入变量来控制该媒体的播放。例如在本实例中,我们在起始帧和终止帧正文输入框中都输入一个变量,这样,通过对变量值的控制,我们就可以实现对媒体信息播放方式的控制。这样,最终用户可以在程序的执行过程中实现对媒体播放控制的改变。
5.单击【layout】命令按钮,弹出【layout】对话框(如图10-5所示):
图10-5 数字化电影的【layout】对话框
在该对话框中,相关选项设置如下:
在【positioning】:下拉选项列表中选择【no change】选项,表示该【数字化电影】在展示窗口中的位置最终用户是不可改变的。
在【movable】:下拉选项列表中选择【never】,表示该【数字化电影】在展示窗口中是不能被最终用户移动的。
6.单击对话框中的【ok】命令按钮结束对该【数字化电影】属性对话框的设置。
步骤4 为【数字化电影】设计按钮加上一个【运算】设计按钮作为装饰,目的是用来设置控制播放数字化电影的起始帧和终止帧的两个变量:startqi和endqi:
(1) 用鼠标单击流程线上的【数字化电影】设计按钮,使其处在选中状态。
(2) 选择authorware窗口【modify】菜单中的【icon】级联菜单中的【calculation】命令选项(快捷键为ctrl+=),弹出图10-6所示的【运算】设计按钮对话框。
图10-6 设置数字化电影的起始帧和终止帧
(3) 在该对话框中输入的内容如下:
startqi := endqi := 1
该表达式的含义是将startqi 和endqi 两个变量的值设置为1,也就是,播放该数字化电影的起始帧和终止帧都是1。在展示窗口中该数字化电影将仅仅显示第一帧。
(4) 关闭该对话框,弹出图10-7所示的确认保存输入内容的对话框。单击该对话框中的【yes】命令按钮,确认保存在该对话框中输入的内容。加上装饰后的【数字化电影】设计按钮如图10-8所示。
图10-7 确认输入内容的对话框
图10-8 程序逻辑结构
步骤5 拖曳一个【交互作用】设计按钮到图10-8所示的位置,创建【交互作用】分支结构:
双击打开该【交互作用】设计按钮。使用【图形工具箱】中的绘图工具,在打开的展示窗口中创建一个背景图案,如图10-9所示。
图10-9 在展示窗口中创建图形和文本
提示:
在创建背景图案的时候我们使用了如下工具:
【图形工具箱】中的矩形绘图工具。
【图形工具箱】中的填充工具(双击椭圆绘图工具弹出填充对话框)。
【图形工具箱】中的文本输入工具。
步骤6 为【交互作用】设计按钮加上装饰。目的是存储【数字化电影】在展示窗口中的原始位置:
(1) 选择authorware窗口【modify】菜单中的【icon】级联菜单中的【calculation】命令选项(快捷键为ctrl+=),弹出图10-10所示的【运算】设计按钮对话框。
图10-10 【运算】设计按钮对话框
在该对话框中输入的内容如下:
saveqipos := point( displayx@"问号", displayy@"问号" )
saveqipos为一个自定义变量,它存储的是该【数字化电影】的原始位置。
知识点:
point()函数:该函数存储的是一点的坐标值。例如point(x,y),x和y就是屏幕坐标中的一点的x和y的坐标。
提示:
关于屏幕坐标系和displayx、displayy变量的具体含义参见实例9。
(2) 关闭该对话框,authorware会弹出确认保存输入内容的对话框,单击该对话框中的【yes】命令按钮,authorware自动检测该对话框中输入的内容,弹出图10-11所示的新建变量对话框。单击该对话框中的【ok】命令按钮,关闭该对话框,完成对新建变量saveqipos的设置。
图10-11 新建变量对话框
步骤7 设置【交互作用】分支结构的第一个分支,实现功能:当鼠标移动到【数字化电影】上方时,播放一遍该数字化电影:
(1) 拖曳一个【映射】设计按钮到图10-12所示的【交互作用】设计按钮下方,弹出图10-12所示的【响应类型】对话框。
图10-12 设置【交互作用】分支结构的分支
(2) 在图10-12的对话框中选择【hot object】热对象选项,单击【ok】命令按钮结束选择。
(3) 然后将该响应分支命名为“转动问号”,如图10-13所示。
图10-13 设立响应分支
(4) 双击图10-13中响应分支的响应类型符号,弹出响应类型对话框,如图10-14所示,设置该对话框。
图10-14 响应类型对话框
(5) 该对话框中的各项设置如图所示:
首先,单击展示窗口中的数字化电影问号,将该对象设置为热对象,在【hot object】区域出现该热对象的名称。
key(s):空白。
【m atch】下拉列表选择【cursor on object】,意思是当鼠标移动到热对象上时则匹配响应。
【cursor】选择如图所示的鼠标类型:意思是当鼠标移动到热对象上的时候,鼠标改变为图示鼠标形状。
(6) 单击图10-14中的【response】命令按钮,弹出【response】对话框,如图10-15所示。
图10-15 【response】对话框
(7) 该对话框中设置如下:
在【erase】:下拉选项列表选择【don’t erase】选项。
在【branch】:下拉选项列表选择【try again】选项。
(8) 单击【ok】命令按钮,结束对响应类型属性对话框的设置。
(9) 双击该【映射】设计按钮,打开第二层设计窗口,进行响应分支内容的设置。
(10) 拖曳一个【运算】设计按钮到第二层设计按钮,命名为“重新设置”。双击打开该设计按钮对话框,如图10-16所示。
图10-16 重新设置【运算】设计按钮对话框
(11) 在该对话框中输入的内容如图10-16所示:
输入内容的含义是:将控制播放问号数字化电影的两个变量startqi 和endqi 的值设定为1,将起始帧和终止帧都设定为第一帧。也就是说,数字化电影在展示窗口中只显示第一帧。
(12) 关闭该对话框。单击确认保存输入内容对话框中的【yes】命令按钮,确认保存在该对话框中输入的内容。
(13) 拖曳一个【等待】设计按钮到图10-17所示的位置。
图10-17 第二层设计窗口逻辑结构
(14) 双击打开该设计按钮,如图10-18所示,设置该对话框如图所示,等待时间设置为0.1秒,目的是让authorware有时间来设置“重新设置”【运算】设计按钮中所设定的内容。
图10-18 【等待】设计按钮对话框
(15) 拖曳一个【运算】设计按钮到图10-19所示的位置,命名为“旋转一次”。双击打开该对话框,在该对话框中输入源程序,如图10-20所示。
图10-19 在第二层设计窗口中添加【运算】设计按钮 图10-20 【运算】设计按钮对话框
在该对话框中,输入内容的含义是将控制数字化电影播放的两个变量分别赋值,将起始帧设定为1,将终止帧设定为21 ,意思是播放一次“问号”设计按钮中的数字化电影。
(16) 关闭该【运算】设计按钮对话框,authorware会弹出确认保存输入内容的对话框。单击该对话框中的【yes】命令按钮。
(17) 关闭该【映射】设计按钮,结束对该响应分支的设置。
步骤8 设置【交互作用】分支结构的第二个分支,实现功能:当鼠标单击【数字化电影】在展示窗口中显示的问号时,该数字化电影飞出展示窗口:
(1) 拖曳一个【映射】设计按钮到图10-21所示的【交互作用】设计按钮的下方,authorware自动将该分支结构的响应类型设置为热对象响应,将该响应分支命名为“鼠标单击”。
图10-21 设立第二响应分支
(2) 双击图10-21中第二响应分支的响应类型符号,弹出响应类型对话框,如图10-22所示,设置该对话框。
图10-22 响应类型对话框
(3) 单击展示窗口中的数字化电影在展示窗口中的第一帧的图像,将该数字化电影设置为热对象。
在【match】:下拉选项列表中选择【single-click】选项,即当最终用户单击展示窗口中的数字化电影时,匹配该响应分支。
(4) 单击图10-22中的【response】命令按钮,弹出【response】对话框,对该对话框进行设置,如图10-23所示。设置内容如下:
图10-23 响应类型的【response】对话框
在【erase】:下拉列表选项中选择【don’t erase】。
在【status】:下拉选项中选择【not judged】。
在【branch】:下拉选项列表中选择【try again】。
(5) 单击该对话框中的【ok】命令按钮,结束设置。
(6) 双击图10-21中第二响应分支中的【映射】设计按钮,打开该设计按钮为第二层的设计窗口。在该设计窗口中我们来设置第二响应分支路径的反馈内容。
提示:
该反馈实现的功能是:当最终用户用鼠标单击该“问号”数字化电影在展示窗口中所在的位置时,该数字化电影将以一定速度飞出展示窗口。
(7) 拖曳一个【声音】设计按钮到打开的第二层设计窗口,双击打开该设计按钮,弹出图10-24所示的引入声音文件对话框。
图10-24 引入声音文件对话框
(8) 同引入数字化电影方法类似,单击【import】命令按钮,弹出【import file】对话框,引入声音文件。读者可以自行引入合适的声音文件。
(9) 单击图10-24中的【timing】命令按钮,弹出图10-25所示的【timing】播放控制对话框,设置该对话框。
图10-25 【timing】播放控制对话框
(10) 图10-25对话框的设置如下:
【concurrency】并发性选项选择【concurrent】。选择该选项,当执行该声音文件时,authorware可以继续执行该设计按钮后面的设计按钮。
【play】:播放控制选择【fixed number of times】,即按照固定的播放次数来播放。
在下面的正文输入框中输入次数为1,即播放的次数为1次。
【rate】:正文输入框中输入的是播放速率,我们使用正常播放速度100%。
其它的选项我们使用authorware的默认选项,不进行修改。
单击该对话框中的【ok】命令按钮,结束设置关闭该对话框。
(11) 拖曳一个【移位】设计按钮到第二层设计窗口流程线上【声音】设计按钮后,命名为“飞出展示窗口”。
(12) 双击该【移位】设计按钮,打开【移位】设计按钮的【motion】对话框,如图10-26所示,在该对话框中设置移动的控制条件。
图10-26 【移位】设计按钮中的【motion】对话框
(13) 其它相关的设置如图10-26所示。
提示:
移动对象的方式为【direct to point】,即直接运动到一固定点。移动的速度以时间来控制,即在一秒钟的时间内,将对象移动到固定点上。在该实例中,【移位】设计按钮将移动的对象在一秒钟内移动到设定的固定点。
(14) 单击该对话框中的【layout】命令按钮,弹出【移位】设计按钮的【layout】对话框,如图10-27所示,设置该对话框。
图10-27 【移位】设计按钮的【layout】对话框
(15) 用鼠标单击展示窗口中的数字化电影在展示窗口中显示的对象,将该数字化电影设定为【移位】设计按钮移动的对象。
(16) 在该对话框中输入对象运动的目标点的坐标:
x坐标:800, y坐标:random(-600,600,1)
意思是在x方向,问号运动到展示窗口外某一固定的x坐标值为800的线上。对于y方向的坐标,我们使用了一个随机数,使用该随机数,则可以实现问号运动的随机性,每一次单击该热对象,热对象飞出展示窗口的方向都不同。但由于x方向坐标的限制,热对象总是飞向展示窗口的右方。
知识点:
random(min, max, units)函数,该函数产生一个介于min 和 max两个值之间,小数点如uints所示的随机数,例如random(-600, 600, 1)产生的随机数是介于-600和600之间,如123、234、333、334等的随机数。随机数的最小与units相同。
(17) 单击对话框中的【ok】命令按钮结束设置。
(18) 如图10-28所示拖曳一个【判定】设计按钮到第二层设计窗口中的流程线上,命名为“鼠标离开”,拖曳一个【映射】设计按钮到【判定】设计按钮下,作为该【判定】设计按钮的一个分支,命名为“空操作”。
图10-28 设置判定分支结构
(19) 双击图10-28所示的【判定】设计按钮,弹出图10-29所示的【判定】设计按钮对话框。对该对话框中的相关设置如下所述:
图10-29 【判定】设计按钮属性对话框
在【repeat】:下拉列表选项选择【until true】,即当条件输入框中输入的内容为真时退出该分支结构,否则一直循环下去。
在该条件输入框中,我们输入~mousedown。
在【branch】选项列表中选择顺序执行,即【sequentially】选项被选。
知识点:
~mousedown的含义:
mousedown为authorware提供的自变量,当鼠标按下时,该变量为true。
~为逻辑运算符,即逻辑非。
~mousedown的含义是对逻辑变量mousedown取非,当mousedown为false,即鼠标没有按下的情况时,~mousedown为true 。也就是说,当鼠标松开的情况下,退出该【判定】分支结构。
(20) 单击【ok】命令按钮关闭该对话框。程序的流程线改变为如图10-30所示。
图10-30 程序的流程结构
21.双击图10-30所示的【判定】分支结构中连接【判定】设计按钮和判定分支之间的小菱形符号,弹出如10-31所示的属性对话框。
图10-31 判定分支擦除属性对话框
(22) 在该对话框中对分支结构内容的擦除设置。我们在这里使用authorware的默认设置【before next selection】,即在执行下一分支前擦除该分支结构中的显示信息。
(23) 单击【ok】命令按钮结束设置。
(24) 该分支结构中的【映射】设计按钮中设置为空。
技巧:
该【判定】分支结构使用【判定】设计按钮对响应的匹配和控制实现了特定的功能。【判定】设计按钮并不仅仅使用来创建执行任务的判定分支结构,还可以用来实现特殊的任务,在该实例中,我们使用【判定】分支结构来实现:当鼠标按下的情况下,authorware循环执行该判定分支中的空操作,也就是说,当最终用户一旦按住鼠标的话,authorware一直进行空操作。只有当鼠标左键松开后才开始执行下面的设计按钮中的内容。
(25) 拖曳一个【移位】设计按钮到图10-32所示的程序流程线上的位置,命名为“复位”。
图10-32 添加【移位】设计按钮
(26) 双击打开该【移位】设计按钮,弹出【移位】设计按钮的【motion】对话框,如图10-33所示。
图10-33 【移位】设计按钮的【motion】对话框
在该对话框中的相关设置如图所示:
在【type】:下拉选项列表中选择【direct to point】选项,移动物体到固定点。
物体的运动时间设置为0,就是说移动的对象直接跳到目的地。
对【concurrency】并发选项选择【wait until done】,意思是只有该移位设计按钮对对象的移动完成后,authorware才可以执行其它的设计按钮。
(27) 单击该对话框中的【layout】命令按钮,弹出【移位】设计按钮的【layout】对话框,如图10-34所示。
图10-34 【移位】设计按钮的【layout】对话框
28.用鼠标单击展示窗口中的数字化电影在展示窗口中显示的对象,将该数字化电影设定为【移位】设计按钮移动的对象。
(29) 该对话框中其它的相关设置如下所述:
在目的地【destination】正文输入框中输入如下内容:
x坐标:saveqipos[1]
y坐标:saveqipos[2]
提示:
在该正文输入框中,我们输入了两个变量,分别代表数字化电影在展示窗口中的原始位置。 其中saveqipos := point( displayx@"问号", displayy@"问号" ),saveqipos[1]为point()函数的x坐标,saveqipos[2]为point()函数的y坐标。
(30) 单击【ok】命令按钮,完成【移位】设计按钮属性对话框的设置。
步骤9 设置【交互作用】分支结构的第三个分支:
(1) 拖曳一个【映射】设计按钮到图10-35所示的位置,来设置【交互作用】分支结构的第三条分支。authorware自动将该分支结构的响应类型设置为热对象响应。
图10-35 添加第三条分支路径
(2) 用鼠标双击图10-35中第三个分支的响应类型图标,弹出图10-36所示的对话框。
图10-36 响应类型选择对话框
响应类型对话框中相关选项的设置如下:
在【type】响应类型下拉列表中选择【time limit】,使用时间限制响应类型。
在【time limit】正文输入框中输入时间限制random(3, 9, 0.25),时间的限制为一个随机的介于3秒和9秒之间的一个值。
在【interruption】下拉列表中选择【pause,restart on return】选项。
在【option】选项中选择【restart for each try】。
提示:
时间限制响应就是在一定的时间内,如果【交互作用】设计按钮没有任何响应匹配,则执行该时间限制响应分支中的反馈信息。
(3) 单击该对话框中的【response】命令按钮,弹出【response】对话框,如图10-37所示。
图10-37 时间限制响应的【response】对话框
(4) 该对话框中相关选项的设置如下:
在【active if】正文输入框中输入条件正文对象。在这里我们输入:~mediaplaying@"问号"&~animating@"问号"&(~mousedown)。
在【erase】擦除选项选择【before next entry】。
在【status】下拉选项列表选择【not judged】。
在【branch】下拉选项列表选择【try again】。
知识点:
【active if】中输入的条件正文,在authorware中,只有该正文输入框中输入的正文为真的时候,该响应分支结构才可以起作用。否则,该分支路径不能响应任何匹配。
mediaplaying@"问号" 为系统变量mediaplaying的引用形式,如果正在播放标题为“问号”的【数字化电影】设计按钮中的数字电影,则该引用变量为true。对该引用变量取非:~mediaplaying@"问号"为false。否则为true。
animating@"问号" 为系统变量animating的引用形式,如果authorware正在移动标题为“问号”的【数字化电影】设计按钮中的数字电影,则该引用变量为true。对该引用变量取非:~animating@"问号"为false。否则为true。
“&”为逻辑与。例如:a:=con1&con2,只有con1和con2两个变量同时为true时,变量a的值才为true。
在该实例中,只有~mediaplaying@"问号"、~animating@"问号"、(~mousedown)三个变量同时为true时,【active if】正文输入框中的条件变量才为true。
(5) 单击【ok】命令按钮,结束响应类型的设置。
(6) 双击图10-35所示的【交互作用】分支结构的第三条分支的【映射】设计按钮,打开第二层设计窗口。
(7) 拖曳一个【运算】设计按钮到第二层设计窗口,命名为“重新设置”,双击打开该【运算】设计按钮对话框,如图10-38所示。
图10-38 【运算】设计按钮对话框
(8) 该对话框中的输入内容如图10-38所示,目的是重新设置控制播放数字化电影的变量,将起始帧和终止帧都设置为第一帧。
(9) 关闭该【运算】设计按钮对话框。
(10) 拖曳一个【等待】设计按钮到图10-39所示的位置。双击打开该设计按钮对话框,如图10-40所示。在该对话框中设置等待时间为0.1秒。
图10-39 添加【等待】设计按钮
图10-40 【等待】设计按钮对话框
提示:
设置【等待】设计按钮的目的是让authorware程序有时间来重新设置。
(11) 关闭该对话框。
(12) 拖曳一个【显示】设计按钮到图10-41所示的设计窗口中,双击打开该设计按钮,在展示窗口中使用【图形工具箱】中的文本输入工具来输入文本如图10-41所示。该【显示】设计按钮中的内容用来提示用户。
图10-41 添加一个提示的【显示】设计按钮
(13) 关闭该显示设计按钮。
(14) 拖曳一个【声音】设计按钮到图10-42所示的位置,对该设计按钮进行设置。
图10-42 添加声音文件
(15) 【声音】设计按钮对话框如图10-43和图10-44所示。
图10-43 【声音】设计按钮的【sound】对话框
图10-44【声音】设计按钮的【timing】对话框
(16) 单击【ok】命令按钮,结束该设计按钮的设置。
(17) 拖曳一个【移位】设计按钮到图10-45所示的位置。命名为“复位”。
图10-45 添加移位设计按钮
(18) 双击打开该设计按钮的【motion】对话框,如图10-46所示。
图10-46 【移位】设计按钮的【motion】对话框
(19) 单击该对话框中的【layout】命令按钮,弹出图10-47所示的【layout】对话框。
图10-47 【移位】设计按钮的【layout】对话框
(20) 单击展示窗口中数字化电影对象,将该对象设定为移动的对象。
两对话框中相关选项的设置如图所示。
(21) 该“复位”设计按钮的作用是将飞出展示窗口的数字化电影复位到初始的位置。
(22) 单击【ok】命令按钮,结束【移位】设计按钮的设置。
(23) 关闭第二层设计窗口。
步骤10 运行程序,观看效果:
使用快捷键ctrl+r运行程序,请读者观察程序设计的结果。
程序的总体结构如图10-48所示。
图4-48 程序的总体结构
练习
(1) 请读者引入另外一个数字化电影来实现该实例。
(2) 尝试改变飞出展示窗口的数字化电影的方向。
新闻热点
疑难解答