论文部分内容阅读
Authorware以其强大的交互与导航功能深受广大课件制作者的喜爱,使用它提供的下拉菜单交互响应可以很方便地制作标准Windows风格的下拉菜单。但是,系统没有直接提供制作动态快捷菜单的交互类型,要想实现快捷菜单功能,需要使用Authorware变量、借助外部扩展函数或Windows注册控件。本文详细地介绍了上述快捷菜单的实现方法,并对各种方案的实现环境要求及运行安全稳定性进行了比较。
一、基于Authorware系统变量的快捷菜单的实现
1.设计重点
通过使用按钮交互及Authorware系统变量DisplayLeft、DisplayTop实时显示快捷菜单项、利用导航功能控制菜单响应、用系统函数Test定位快捷菜单。
2.界面设置
程序主流程见图1(左)所示。程序由一个框架结构组成,框架图标的上半区由一个条件交互构成,用于响应用户右击鼠标的操作;RightMouseDown群组图标的结构如图1(右)所示,在这里定位快捷菜单项及设置导航控制。
3.图标及属性设置
(1)框架图标的设置。删除框架图标中的原有结构,加入一个条件交互,条件为“RightMouseDown”,将【响应(Response)】选项卡中的“范围(Scope)”设置为“永久(Perpetual)”,“分支(Branch)”设置为“返回(Return)”,其他默认不变。
(2)RightMouseDown群组图标的设置。其中,“初始化”群组图标中不加任何内容;为“右键响应”交互中的计算图标分支添加内容:Goto(IconID@"初始化")。
三个导向按钮分支的【响应(Response)】选项卡中的“分支(Branch)”都设为“退出交互(Exit Interaction)”;【按钮】选项卡中的“位置(Location)”栏X中填入:DisplayLeft@(“右键响应”) 10,在Y栏分别填入:DisplayTop@(“右键响应”) 10、DisplayTop@(“右键响应”) 40、DisplayTop@(“右键响应”) 70。其他默认不变。三个导航图标分别设置为跳向“Flash动画”、“汽车鉴赏”、“风俗文化”。
“擦除内容”热区响应中的“分支(Branch)”设为“退出交互(Exit Interaction)”,群组图标内不加内容。
(3)添加按钮面板,并定位面板和设置菜单响应。双击“右键响应”交互图标,画一个矩形(作为按钮面板)将三个按钮框在里面,并修饰矩形;按住Ctrl键并双击矩形,在弹出的“属性:交互图标[右键响应] (Properties:Interaction Icon)”栏,设置“交互作用”中的“擦除(Erase)”项为“下次输入之后”,设置“板面布局(Layout)”中的“位置(Positioning)”及“可移动性(Movable)”均为“在屏幕上(On Screen)”,在“初始 (Initial)”中X栏填入:
Test(CursorX DisplayWidth>WindowWidth,CursorX-DisplayWidth/2,CursorX DisplayWidth/2)
在Y栏写入:
Test(CursorY DisplayHeight>WindowHeight,CursorY-DisplayHeight/2,CursorY DisplayHeight/2)
其他保持默认。运行效果见图2(本例的运行环境为Authorware 7)。
图2 运行效果图一
此方法中用到的变量及函数等均是Authorware自带的,不需要借助外部代码,故程序很容易实现,且运行很安全稳定。
二、基于UCD函数的快捷菜单及多级菜单的实现
tMsControls.u32是Mediashoppe提供的一个免费U32(UserCode),可以在Authorware的安装目录里找到,tMsControls.u32提供最多两级的快捷菜单的支持。
1.设计重点
通过利用tMsControls.u32文件中的函数tMsCreatePopupList获得Windows句柄, tMsAddItem添加菜单项,tMsDisplayControl显示菜单,tMsDestroyControl删除不用的菜单。
2.界面设置
程序主流程如图3所示。在“运行效果”图标中,用系统变量CursorX和CursorY显示光标位置,用自定义变量Res显示用户在快捷菜单上的选项;“设置快捷菜单”计算图标用于设置一、二级菜单项;“显示快捷菜单”交互用于设置用户右击鼠标操作的响应。
3.图标及属性设置
(1)文件属性的设置。在【文件属性】对话框中,去掉“显示菜单栏”选项前的对钩。
(2)载入UCD函数。载入tMsControls.u32文件中的函数tMsAddItem、tMsCreatePopupList、tMsDisplayControl、tMsDestroyControl。
(3)设置“运行效果”显示图标。在显示图标中导入一幅背景图,并输入以下变量:
{CursorX}、{CursorY}、{Res}
在显示图标的属性对话框,选中“更新变量显示”项。
(4)“设置快捷菜单”的设置。在计算图标的输入窗口,输入以下内容:
//取得窗口句柄
popHandle:=tMsCreatePopupList(WindowHandle)
//设置一、二级菜单内容
tMsAddItem(popHandle, 1,0,"Flash动画")
tMsAddItem(popHandle, 1,1,"最浪漫的事")
tMsAddItem(popHandle, 1,2,"烟花")
tMsAddItem(popHandle, 1,3,"花好月圆")
tMsAddItem(popHandle, 2,0,"-")
tMsAddItem(popHandle, 3,0,"山水风光")
tMsAddItem(popHandle, 3,1,"山水")
tMsAddItem(popHandle, 3,2,"风光")
tMsAddItem(popHandle, 4,0,"-")
tMsAddItem(popHandle, 5,0,"退出")
(5)设置“显示快捷菜单”条件交互。交互条件为RightMouseDown,“范围”为“永久”,“分支”为“返回”。
在响应分支的计算图标中输入如下内容:
//设置菜单显示位置
if CursorX<728 then
Res:=tMsDisplayControl(popHandle, CursorX, CursorY, 100,100, 1)
else
Res:=tMsDisplayControl(popHandle, CursorX-70, CursorY, 100,100, 1)
end if
//当不需要再使用该菜单时将它删掉
tMsDestroyControl(popupHandle) //判断是否退出
if (Res=5) then Quit()
运行程序的效果如图4所示(本例的运行环境为Authorware 6.5)。
图4 运行效果图二
该方法用到了用户自定义的函数,属于加入的外部代码,故运行不如另外两种方法安全稳定。
三、基于IEMENU.OCX控件的快捷菜单的实现
通过注册将IEMENU.OCX控件内嵌在微软操作系统中,此时可以获得PopupMenu Object控件,利用该控件(微软内嵌在系统中的代码)创建的快捷菜单运行比较安全稳定。
1.界面设置
主程序流程见图5所示。流程中的dmx图标是一个DirectMedia Xtra插件,用于引入数字化电影;PopupMenu Object控件的功能是响应用户右击鼠标操作——调出快捷菜单;“初始化”图标用于设置初始演示界面;“交互控制”用于添加快捷菜单项及设置菜单响应。
图5 利用控件创建快捷菜单的流程图
2.图标及属性设置
(1)dmx控件的设置:通过依次选择【插入】/【Tabuleiro Xtras】/【DirectMediaXtra】,将插入的控件改名为“dmx”,打开属性对话框,单击【选项】按钮,在弹出的DirectMediaXtra属性对话框中,选择“循环播放”、“起始暂停”项。
右击dmx图标并选择“计算”命令,在其中输入如下内容:
//设置dmx图标的file属性为保存当前程序的文件夹中的“片头.avi”
SetIconProperty(@"dmx",#file,FileLocation^"片头.avi")
注:这里已经将程序中要播放的动画文件“片头.avi”放到当前文件夹中。
(2)PopupMenu Object控件的设置:通过依次选择【插入】/【控制】/【ActiveX…】,在弹出的【Select ActiveX Control】中选择“PopupMenu Object”项。
(3)在“初始化”计算图标中输入如下内容:
//播放动画
CallSprite(@"dmx",#videoplay)
(4)在“交互控制”交互中设置一个条件交互分支和一个事件交互分支。
在条件交互的属性面板中,设置【条件】选项卡中的“条件”为RightMouseDown,“自动”为“当由假为真”;【响应】选项卡中“擦除”为“不擦除”。其他保持默认。
在事件交互的属性面板中,设置【事件】选项卡中的“发送者”为“图标PopupMenu Object”,“事件”为“Click”;【响应】选项卡中的“范围”为“永久”,“擦除”为“在退出时”。其它保持默认。
在RightMouseDown计算图标中输入如下内容。
//添加快捷菜单项
CallSprite(@"PopupMenu Object",#addItem,"暂停","1")
CallSprite(@"PopupMenu Object",#addItem,"播放","2")
//弹出快捷菜单
CallSprite(@"PopupMenu Object",#popup,"0","0")
//不用时清除控件中的菜单项
CallSprite(@"PopupMenu Object",#Clear)
在“右键控制”计算图标中输入如下内容:
//读取消息的参数,获得用户选取的菜单项的索引
nTemp:=GetNumber(1,ValueAtIndex(EventLastMatched,6))
if(nTemp=1)then
CallSprite(@"dmx",#videopause)//暂停播放动画
else if(nTemp=2) then
CallSprite(@"dmx",#videoplay)//开始播放动画
end if
运行程序的效果如图6所示(本例的运行环境为Authorware 7)。
图6 运行效果图三
上面使用Authorware变量及UCD函数、Windows注册控件等功能实现了几种不同的设计方案,并对其安全性进行了比较。当然,方法不限于此,用户也可借助于第三方软件如Budmenu.u32(真正支持任意多级弹出式子菜单而且菜单项支持Checked属性、快捷键设置、允许用户修饰菜单项的显示文字)等来制作,但是其代码运行的安全性不如上述方法。在课件的制作中,通过对各种菜单灵活有效的使用可以扩展课件的交互控制、丰富课件功能。
参考文献
[1]阿标编著.Authorware 7.0多媒体课件开发之实战演练[M].中国水利水电出版社,2004.
[2]倪应华,陈尧妃.Authorware中快捷菜单的设计与实现[J].微机发展.2004.
[3]张增强,程伟,罗心晶等.Authorware 7.0多媒体设计新概念百例[M].中国水利水电出版社,2004.
[4]赵子江.多媒体技术应用教程[M].机械工业出版社,2002.
(作者单位:河北邢台学院教育科学教学部)
一、基于Authorware系统变量的快捷菜单的实现
1.设计重点
通过使用按钮交互及Authorware系统变量DisplayLeft、DisplayTop实时显示快捷菜单项、利用导航功能控制菜单响应、用系统函数Test定位快捷菜单。
2.界面设置
程序主流程见图1(左)所示。程序由一个框架结构组成,框架图标的上半区由一个条件交互构成,用于响应用户右击鼠标的操作;RightMouseDown群组图标的结构如图1(右)所示,在这里定位快捷菜单项及设置导航控制。
3.图标及属性设置
(1)框架图标的设置。删除框架图标中的原有结构,加入一个条件交互,条件为“RightMouseDown”,将【响应(Response)】选项卡中的“范围(Scope)”设置为“永久(Perpetual)”,“分支(Branch)”设置为“返回(Return)”,其他默认不变。
(2)RightMouseDown群组图标的设置。其中,“初始化”群组图标中不加任何内容;为“右键响应”交互中的计算图标分支添加内容:Goto(IconID@"初始化")。
三个导向按钮分支的【响应(Response)】选项卡中的“分支(Branch)”都设为“退出交互(Exit Interaction)”;【按钮】选项卡中的“位置(Location)”栏X中填入:DisplayLeft@(“右键响应”) 10,在Y栏分别填入:DisplayTop@(“右键响应”) 10、DisplayTop@(“右键响应”) 40、DisplayTop@(“右键响应”) 70。其他默认不变。三个导航图标分别设置为跳向“Flash动画”、“汽车鉴赏”、“风俗文化”。
“擦除内容”热区响应中的“分支(Branch)”设为“退出交互(Exit Interaction)”,群组图标内不加内容。
(3)添加按钮面板,并定位面板和设置菜单响应。双击“右键响应”交互图标,画一个矩形(作为按钮面板)将三个按钮框在里面,并修饰矩形;按住Ctrl键并双击矩形,在弹出的“属性:交互图标[右键响应] (Properties:Interaction Icon)”栏,设置“交互作用”中的“擦除(Erase)”项为“下次输入之后”,设置“板面布局(Layout)”中的“位置(Positioning)”及“可移动性(Movable)”均为“在屏幕上(On Screen)”,在“初始 (Initial)”中X栏填入:
Test(CursorX DisplayWidth>WindowWidth,CursorX-DisplayWidth/2,CursorX DisplayWidth/2)
在Y栏写入:
Test(CursorY DisplayHeight>WindowHeight,CursorY-DisplayHeight/2,CursorY DisplayHeight/2)
其他保持默认。运行效果见图2(本例的运行环境为Authorware 7)。
图2 运行效果图一
此方法中用到的变量及函数等均是Authorware自带的,不需要借助外部代码,故程序很容易实现,且运行很安全稳定。
二、基于UCD函数的快捷菜单及多级菜单的实现
tMsControls.u32是Mediashoppe提供的一个免费U32(UserCode),可以在Authorware的安装目录里找到,tMsControls.u32提供最多两级的快捷菜单的支持。
1.设计重点
通过利用tMsControls.u32文件中的函数tMsCreatePopupList获得Windows句柄, tMsAddItem添加菜单项,tMsDisplayControl显示菜单,tMsDestroyControl删除不用的菜单。
2.界面设置
程序主流程如图3所示。在“运行效果”图标中,用系统变量CursorX和CursorY显示光标位置,用自定义变量Res显示用户在快捷菜单上的选项;“设置快捷菜单”计算图标用于设置一、二级菜单项;“显示快捷菜单”交互用于设置用户右击鼠标操作的响应。
3.图标及属性设置
(1)文件属性的设置。在【文件属性】对话框中,去掉“显示菜单栏”选项前的对钩。
(2)载入UCD函数。载入tMsControls.u32文件中的函数tMsAddItem、tMsCreatePopupList、tMsDisplayControl、tMsDestroyControl。
(3)设置“运行效果”显示图标。在显示图标中导入一幅背景图,并输入以下变量:
{CursorX}、{CursorY}、{Res}
在显示图标的属性对话框,选中“更新变量显示”项。
(4)“设置快捷菜单”的设置。在计算图标的输入窗口,输入以下内容:
//取得窗口句柄
popHandle:=tMsCreatePopupList(WindowHandle)
//设置一、二级菜单内容
tMsAddItem(popHandle, 1,0,"Flash动画")
tMsAddItem(popHandle, 1,1,"最浪漫的事")
tMsAddItem(popHandle, 1,2,"烟花")
tMsAddItem(popHandle, 1,3,"花好月圆")
tMsAddItem(popHandle, 2,0,"-")
tMsAddItem(popHandle, 3,0,"山水风光")
tMsAddItem(popHandle, 3,1,"山水")
tMsAddItem(popHandle, 3,2,"风光")
tMsAddItem(popHandle, 4,0,"-")
tMsAddItem(popHandle, 5,0,"退出")
(5)设置“显示快捷菜单”条件交互。交互条件为RightMouseDown,“范围”为“永久”,“分支”为“返回”。
在响应分支的计算图标中输入如下内容:
//设置菜单显示位置
if CursorX<728 then
Res:=tMsDisplayControl(popHandle, CursorX, CursorY, 100,100, 1)
else
Res:=tMsDisplayControl(popHandle, CursorX-70, CursorY, 100,100, 1)
end if
//当不需要再使用该菜单时将它删掉
tMsDestroyControl(popupHandle) //判断是否退出
if (Res=5) then Quit()
运行程序的效果如图4所示(本例的运行环境为Authorware 6.5)。
图4 运行效果图二
该方法用到了用户自定义的函数,属于加入的外部代码,故运行不如另外两种方法安全稳定。
三、基于IEMENU.OCX控件的快捷菜单的实现
通过注册将IEMENU.OCX控件内嵌在微软操作系统中,此时可以获得PopupMenu Object控件,利用该控件(微软内嵌在系统中的代码)创建的快捷菜单运行比较安全稳定。
1.界面设置
主程序流程见图5所示。流程中的dmx图标是一个DirectMedia Xtra插件,用于引入数字化电影;PopupMenu Object控件的功能是响应用户右击鼠标操作——调出快捷菜单;“初始化”图标用于设置初始演示界面;“交互控制”用于添加快捷菜单项及设置菜单响应。
图5 利用控件创建快捷菜单的流程图
2.图标及属性设置
(1)dmx控件的设置:通过依次选择【插入】/【Tabuleiro Xtras】/【DirectMediaXtra】,将插入的控件改名为“dmx”,打开属性对话框,单击【选项】按钮,在弹出的DirectMediaXtra属性对话框中,选择“循环播放”、“起始暂停”项。
右击dmx图标并选择“计算”命令,在其中输入如下内容:
//设置dmx图标的file属性为保存当前程序的文件夹中的“片头.avi”
SetIconProperty(@"dmx",#file,FileLocation^"片头.avi")
注:这里已经将程序中要播放的动画文件“片头.avi”放到当前文件夹中。
(2)PopupMenu Object控件的设置:通过依次选择【插入】/【控制】/【ActiveX…】,在弹出的【Select ActiveX Control】中选择“PopupMenu Object”项。
(3)在“初始化”计算图标中输入如下内容:
//播放动画
CallSprite(@"dmx",#videoplay)
(4)在“交互控制”交互中设置一个条件交互分支和一个事件交互分支。
在条件交互的属性面板中,设置【条件】选项卡中的“条件”为RightMouseDown,“自动”为“当由假为真”;【响应】选项卡中“擦除”为“不擦除”。其他保持默认。
在事件交互的属性面板中,设置【事件】选项卡中的“发送者”为“图标PopupMenu Object”,“事件”为“Click”;【响应】选项卡中的“范围”为“永久”,“擦除”为“在退出时”。其它保持默认。
在RightMouseDown计算图标中输入如下内容。
//添加快捷菜单项
CallSprite(@"PopupMenu Object",#addItem,"暂停","1")
CallSprite(@"PopupMenu Object",#addItem,"播放","2")
//弹出快捷菜单
CallSprite(@"PopupMenu Object",#popup,"0","0")
//不用时清除控件中的菜单项
CallSprite(@"PopupMenu Object",#Clear)
在“右键控制”计算图标中输入如下内容:
//读取消息的参数,获得用户选取的菜单项的索引
nTemp:=GetNumber(1,ValueAtIndex(EventLastMatched,6))
if(nTemp=1)then
CallSprite(@"dmx",#videopause)//暂停播放动画
else if(nTemp=2) then
CallSprite(@"dmx",#videoplay)//开始播放动画
end if
运行程序的效果如图6所示(本例的运行环境为Authorware 7)。
图6 运行效果图三
上面使用Authorware变量及UCD函数、Windows注册控件等功能实现了几种不同的设计方案,并对其安全性进行了比较。当然,方法不限于此,用户也可借助于第三方软件如Budmenu.u32(真正支持任意多级弹出式子菜单而且菜单项支持Checked属性、快捷键设置、允许用户修饰菜单项的显示文字)等来制作,但是其代码运行的安全性不如上述方法。在课件的制作中,通过对各种菜单灵活有效的使用可以扩展课件的交互控制、丰富课件功能。
参考文献
[1]阿标编著.Authorware 7.0多媒体课件开发之实战演练[M].中国水利水电出版社,2004.
[2]倪应华,陈尧妃.Authorware中快捷菜单的设计与实现[J].微机发展.2004.
[3]张增强,程伟,罗心晶等.Authorware 7.0多媒体设计新概念百例[M].中国水利水电出版社,2004.
[4]赵子江.多媒体技术应用教程[M].机械工业出版社,2002.
(作者单位:河北邢台学院教育科学教学部)