核心提示:Authorware是Macromedia公司出品的专业进行多媒体程序设计的工具
1 引 言
Authorware是Macromedia公司出品的专业进行多媒体程序设计的工具,是目前公认的功能强大的交互式多媒体软件,广泛地应用到教学、商业、影视等领域。Microsoft Agent是微软公司发布的一项代理软件开发技术,作为一种软件代理工具,Agent以其强大的交互功能、鲜明的人性特点、优美的操作界面和简便统一的编程方法,对由菜单、按钮、提示框等组成的传统人机交互方式产生了很大影响,在多媒体创作、Web应用、教育软件、软件帮助系统和辅助工具制作等方面,具有广阔的应用前景。
本文就针对Microsoft Agent技术在Authorware中的使用进行讨论。
2 Microsoft Agent介绍
MicrosoftAgent最早出现在Office的帮助中,微软称之为“Office助手”。最新版本是Agent 2.0,支持简体中文。Microsoft Agent作为一种软件代理工具,主要作用是提供一种易于理解和使用的操作界面,接受用户的指令、代替用户完成某些复杂繁琐的工作、或为用户提供帮助。Microsoft Agent发展到2.0版,比以前版本有较大的改进。主要表现在:
(1)他采用了基于COM的ActiveX控件方式,使得Microsoft Agent可以加入到普通应用程序中供本地系
统使用,也可以把他嵌入到HTML文档中供Internet/Intranet使用。Microsoft Agent支持C/C++,VisualBasic,Java,JScript和VBScript等多种编程语言。
(2)Agent中的提供了多个动画角色,每个动画角色又提供了丰富的动作,如:听、说、玩魔术、鼓掌、悲伤、再见等。另外Agent动画角色本身是一个“AlwaysOnTop”窗口,只有人物身体部分挡住背景,使得他具有更好的视觉效果。
(3)Agent更为显著的特点是结合了语音功能,Agent角色不仅能说话,而且还能听懂用户发出的命令。
3 在Authorware 6.0中使用Microsoft Agent 2.0
(1)使用Microsoft Agent 2.0所需要的基本支持文件及说明如表1所示。
(2)在Authorware 6.0中使用Microsoft Agent2.0的原理和方法
由于Microsoft Agent采用了基于COM的ActiveX控件方式,我们要使Authorware能够使用Microsoft Agent,就必须访问MicorsoftAgent组件接口。Authorware不能直接对Microsoft Agent的接口进行编程,但可通过MsAgent.u32来访问Agent。实现原理图如图1所示。
当Authorware需要使用Agent时,MsAgent.u32的函数首先通过访问Agent SCM(Service ControlManager)来激活Agent服务器程序(即AgentSvr.exe),使得客户程序(Authorware)与服务器(MsAgent)建立通信。这样Authorware就可以使用Agent组件提供的各种功能。
在实际的使用中,首先要安装MicrosoftAgent中的支持文件,然后加载MSAgent2.u32并添加其提供的对Agent角色编程的函数,这样就可以像使用系统函数一样在程序中使用MsAgent2.u32中的函数对角色进行操作了。在Authorware中对Agent角色操作的流程如图2所示。
(3)使用Msagent2.u32中的函数对Agent角色编程
①加载Agent动画角色语法:maCharsDir()
说明:该函数返回Agent角色所在的文件目录(在Windows 98/2000/Me中是C:\windows\msagent\chars,Windows NT中是C:\winnt\msagent\chars)。
语法:Id:=maLoad(“Filename”)
说明:该函数用于加载由Filename指定的Agent角色,若加载成功,返回该Agent角色的Id的值,否则返回0。
②显示Agent动画角色
语法:maShow(Id,x,y,AutoPopupMenu,HideOnIdle)
说明:该函数是在(x,y)处显示加载的Agent角色。参数AutoPopupMenu为1时,允许使用鼠标右键快捷菜单;为0时,禁止使用。参数HideOnIdle为1时,当Agent角色空闲时自动隐藏。对于*.ACS格式的Agent角色,只有Agent角色被加载后,才能使用该函数显示指定Agent角色。
例如:
例子首先加载Agent角色Merlin,Merlin位于C:\window\msagen\chars\目录下,然后在(10,30)点处显示Agent角色,当我们点击右键时,会出现快捷菜单。
当然,我们也可以在一个窗口中加载多个Agent角色(但不能是同一个角色),分别对他们操作,互不影响。如下面的例子同时把Merlin,Peedy这2个Agent角色显示出来。例:
③对指定的Agent角色进行各种动作操作语法:maAnimationNames(Id)
说明:返回指定Agent角色的动作列表。
Microsoft提供的每个Agent角色都有十几个动作,我们可以通过下面的方法显示出来,以方便我们操作。加入Display图标,设置文本格式为Scrolling text,输入:“Agent角色动作{maAnimationNames(MyAgentId)}”,这样我们就可以对Agent角色的动作一目了然。
语法:maGesture(Id,x,y)
说明:Agent角色在(x,y)处打手势
语法:maMove(Id,x,y)
说明:将Agent角色移动到(x,y)处。
语法:maPlay(Id,“Animation”)
说明:演示特定的动作Animation.
语法:maSpeak(Id,“text”,“Wavefile”)
说明:说出指定的文本或声音文件。参数“text”为说的内容,参数“Wavefile”为说的输出指定的音频文件。两个都是可选参数,但使用该函数时至少要提供一个。如果安装有语音引擎和文本-语音转化引擎(TTS),可以同时将text指定的文本转化为语音输出,此时只需提供text参数,Agent角色将在文字气球(Word Balloon)中显示text的内容的同时,播放text的语音。
例如:text:=“Hi!This is a sample!”
maSpeak(MyAgentId,text,“”)maSpeak(MyAgentId,text)
在例子中后一个maSpeak函数可以把text的内容在文字气球中显示出来,同时朗读该句话。对于中文的语音输出,由于没有相应的中文文本-语音转化引擎(TTS),只能先将text的内容由其他方式转化为声音文件,然后再使用maSpeak。如:
text:=“这个例子主要演示Agent的语音功能”
maSpeak(MyAgentId,text,“s_text.wav”)
其中:s_text.wav是设计者提供的text内容对应的声音文件。
语法:maStopAll(Id)
说明:停止Agent角色的演示动作。
④Agent角色属性的获取与设置
语法:Height:=maGetHeight(Id)
说明:若操作成功,返回Agent角色的高度。
语法:Width:=maGetWidth(Id)
说明:若操作成功,返回Agent角色的宽度。
语法:maSetHeight(Id,Height)
说明:设置Agent角色的高度。
语法:maSetWidth(Id,Width)
说明:设置Agent角色的宽度。语法:maPropertySheet()
说明:显示Agent角色的一些高级选项。如输出的语速,文字气球(Word Balloon)中的字体等。
⑤Agent角色的隐藏
语法:maRemove(Id)
说明:立即将指定的Agent角色从屏幕上移去。
语法:maHide(Id)
说明:隐藏指定的Agent角色。
(4)发布包含Microsoft Agent的程序
由于使用了Microsoft Agent,因此在发布程序时要注意以下问题:
①由于所有的ActiveX对象都必须注册到系统的注册表中,因此在发布时应该把Msagent.exe包含进来,以便包含Microsoft Agent这个ActiveX控件的服务器程序能够正确地运行;
②把Msagent2.u32放置在由系统变量FileLocation所确定的目录下;
③正确确定Agent角色文件所存储的位置;
④正确创建安装程序,以便Msagent.exe能够在后台自动得到安装;常用的方法是借助/Q命令行参数,即Msagent.exe/Q;
⑤如果要使用语言引擎Text-to-Speech Engine (如Lernout&Hauspie控件)。也应该将其安装到用户的计算机上。同样要使用/Q命令行参数使其在后台得到安装。
4 结 语
如果我们能恰当地使用Microsoft Agent技术,一定能制作出界面更加友好、更具人性化的多媒体软件。另外如果你对Microsoft Agent中提供的角色不太满意,你还可以利用MicrosoftAgent中提供的角色编辑器和一些动画制作软件制作属于自己的角色。
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交