2024年1月8日发(作者:)
agent:Agent插件浅析
疯狂代码 / ĵ:DataBase/
Agent插件浅析
使用过office xp、金山毒霸和瑞星杀毒软件Software朋友定会对中人性化动画角色留下深刻印象这完全归功于微软推出Agent(“代理”)技术Agent采用COM技术使用ActiveXControl控件方式支持现在流行各种开发工具不仅可以实现文本朗读而且可识别用户语音命令在应用和HTML文件中得到广泛使用
下面我们以PowerBuilder 8.0为开发工具来编制个小实用,步步介绍说明其实现思路方法:
第步从Internet网上下载Agent插件,并安装在计算机上,这是开发前期准备工作:
这些插件来源于微软公司相关网站WebSite,下载网址为:/msagent/downloads/,连接使用该网页:
1、首先单击“Download the Microsoft Agent core componts(395kbs exe)”下载并安装Agent核心组件其文件名为“"
2、其次单击(先选择"Simplied Chinese (127kb exe)”)下载并安装语言组件其文件名为“"
3、其次单击(先选择"Lernout & Hauspie TruVoice TTS engine - American English(1Mb exe)”)下载并安装TTS引擎其文件名为“tv_",要实现语音朗读必须安装当前版本支持英语
4、再其次单击(先选择"Doadload the Microsoft Speech Recognition Engine(6Mb exe)”)下载并安装语音识别引擎其文件名为“",要实现语音命令识别必须安装当前版本支持英语
5、最后单击“Download selected character"下载安装要用到动画角色文件在这里我们下载微软公司网站WebSite所提供动画角色文件主要包括Genie(妖怪、鬼)、Robby(机器人)、Merlin、Peedy(睡衣)共 4种动画角色它们不但有丰富行为动作而且具有语言功能其对应文件名分别为、、、这些Agent角色常用动画动作通常用含有相同意义英文单词来标识如下表所示以下所述编程例子即演示它们分别所产生动作效果
常量相关动作
Acknowledge显示承认、答谢动作
Alert显示警告动作
Announce显示宣布、通告工作
Blink显示眨眼动作
Decline显示摇头拒绝动作
DoMagic1、DoMagic2显示指挥演奏动作
Confused显示迷惑动作
Congratulate显示祝贺动作
DontRecognize显示无法识别动作
Explain显示解释动作
GesttureDown显示向下方向手势动作
GesttureLeft显示向左方向手势动作
GesttureRight显示向右方向手势动作
GesttureUp显示向上方向手势动作
GetAttention显示立正动作
GetAttentionContinued显示继续立正动作
GetAttentionReturn显示继续立正动作
Greet显示问候动作
Hearing_1
Hearing_2显示左右聆听动作
Hearing_3
Hide隐藏动画角色
Idle1_1 显示舒展动作
Idle1_2 显示向左倾动作
Idle1_3 显示向右倾动作
Idle1_4 显示向后倾动作
Idle1_5 显示向前倾动作
Idle2_1 显示带耳机听音乐动作
Idle2_2 显示吃饼干动作
Idle3_1 显示带耳机听音乐动作
Idle3_2 显示瞌睡动作
Idle3_3 显示带耳机听音乐动作
LookDown显示向下查看动作
LookDownBlink显示向下眨眼动作
LookDownLeft显示向左下方查看动作
LookDownLeftBlink显示向左下方眨眼动作
LookDownLeftReturn显示回返向左下方查看动作
LookDownRight显示向右下方查看动作
LookDownRightBlink显示向右下方眨眼动作
LookDownRightReturn显示回返向右下方查看动作
LookDownReturn显示回返向下方查看动作
LookLeft显示向左方查看动作
LookLeftBlink显示向左方眨眼动作
LookLeftReturn显示回返向左方查看动作
LookRight显示向右方查看动作
LookRightBlink显示向右方眨眼动作
LookRightReturn显示回返向右方查看动作
LookUp显示向上查看动作
LookUpBlink显示向上眨眼动作
LookUpLeft显示向左上方查看动作
LookUpLeftBlink显示向左上方眨眼动作
LookUpLeftReturn显示回返向左上方查看动作
LookUpRight显示向右上方查看动作
LookUpRightBlink显示向右上方眨眼动作
LookUpRightReturn显示回返向右上方查看动作
LookUpReturn显示回返向上方查看动作
MoveDown显示向下移动动作
MoveLeft显示向左移动动作
MoveRight显示向右移动动作
MoveUp显示向上移动动作
Pleaseed显示愉快动作
Process显示处理工作动作
Processing显示正在处理工作动作
Read显示阅读动作
Readcontinued显示继续阅读动作
Reading显示正在阅读动作
ReadReturn显示停止阅读动作
Sad显示悲伤动作
Search显示查找动作
Searching显示正在查找动作
Show显示动画角色
StartListening显示开始聆听动作
StopListening显示停止聆听动作
Suggest显示建议动作
Surprised显示惊讶表情
Think显示研究表情
Thinking显示正在研究表情
Uncertain显示不确定动作
Wave显示致意动作
Write显示写动作
Writecontinued显示继续写动作
Writing显示正在写动作
WritReturn显示停止写动作
当然我们也可以从/msagent/downloads/网页单击“Downloadthe
Microsoft Agent Character Editor(1Mb exe)”和“Download the Microsoft Agent LinguisticInformation
SoundEditing Tool(6.2Mb exe)”下载制作工具亲自制作自己所钟爱动画角色形象
第 2步设计应用
在PowerBuilder中提供了OLEControl控件以便PowerBuilder应用能够使用其它开发工具编写COM组件和ActiveXControl控件
在使用相关COM组件和ActiveXControl控件先须注册相关COM组件和ActiveXControl控件,在PowerBuilder注册Control控件可以在PowerBulider
开发环境中插入OLEControl控件时选择Regisiter New进行注册
AgentControl控件主要属性如下表:
属性用途
Charactors 用于设置和Control控件相关联动画角色文件
Connected用于判别Control控件是否和Agent服务器相连接
LanguageID用于设置Agent所使用语言目前仅可设置为十 6进制“409”,即“&H409”
AgentControl控件主要思路方法如下表:
思路方法用途
Load用于化AgentControl控件并加载动画角色数据文件
UnLoad用于卸载动画角色数据文件
Show用于显示Agent动画角色并可通过参数控制动画角色显示速度
Hide用于隐藏Agent动画角色并可通过参数控制动画角色隐藏速度
StopAll用于停止动画角色所有动作
Stop用于停止动画角色当前动作
MoveTo用于移动动画角色可通过参数来设置移动坐标和移动速度
Interrupt用于中断动画角色动画在执行些有持续性动画动作时如不
中断该动作即执行下个动作会产生异常现象
Wait用于在多个动画角色间实现相互的间动作协调
Play用于执行指定动画动作可通过参数来设置动画类型
Speak用于通过语音合成引擎实现英语语音合成输出功能即只需要输入
英文串Agent即可通过声音输出设备“说话”
AgentControl控件主要事件如下表
事件用途
Show在Agent动画角色显示时触发可利用该事件将主界面隐藏
Hide在Agent动画角色隐藏时触发可利用该事件将主界面重新显示
在PowerBuilder中实现步骤如下
1、新建工作区;
2、新建应用目标PowerBuilder会自动建立个pbl库文件以便存放相关PowerBuilder对象并建立个myexample
应用对象;
3、新建窗口对象w_example,并在其上放置Control控件如下表:
Control控件Control控件名称
listboxlb_1
commandbutton cb_1
commandbuttoncb_2
ole controlole_1(并插入对应Agent ActiveXControl控件)
4、新建菜单对象m_file,并添加相关菜单项如下表:
菜单名菜单文本菜单脚本
m_file文件(&F)
m_fileopen打开(&O)revent("ue_fileopen")
m_bar1-
m_fileexit退出(&E)revent("ue_fileexit")
5、将窗口对象w_examplemenuid属性设置为m_file
6、定义窗口w_example例子变量如下:
privite:
boolean ib_flag
is_animationname
7、编写窗口w_example相关事件脚本:
open事件脚本如下:
long result,ll
fileexists(GetCurrentDirectory ( )+"")=false then
result=messagebox("提示“"在当前目录下没有动画角色文件"stop!)
ib_flag=false
close(this)
ib_flag=true
ole_1. O B J E C ("CharacterID",GetCurrentDirectory ( )+"")
ole_1. O B J E C ters("CharacterID").languageID=1033
ole_1. O B J E C ters("CharacterID").moveto(20,20)
ole_1. O B J E C ters("CharacterID").show
ole_1. O B J E C ters("CharacterID").play("Wave")
ole_1. O B J E C ters("CharacterID").speak("Hello,Welcome to use The Character AnimationPreviewer Programm!")
ole_1. O B J E C ters("CharacterID").play("Reading")
lb_
for ll=1 to upperbound(ole_1. O B J E C ters("CharacterID").animationnames)
lb_m(ole_1. O B J E C ters("CharacterID").animationnames[ll])
next
lb_item(1)
close事件脚本如下:
ib_flag=true then
ole_1. O B J E C ters("CharacterID").hide
ole_1. O B J E C ("CharacterID")
end
自定义事件ue_fileopen脚本如下:
docname, named
eger value
value = GetFileOpenName("选择动画角色文件",docname, named, "acs", "动画角色文件(*.acs),*.acs")
IF value = 1 THEN
ole_1. O B J E C ("CharacterID")
ole_1. O B J E C ("CharacterID",docname)
ole_1. O B J E C ters("CharacterID").languageID=1033
ole_1. O B J E C ters("CharacterID").moveto(20,20)
ole_1. O B J E C ters("CharacterID").show
ole_1. O B J E C ters("CharacterID").speak("Hello!")
ole_1. O B J E C ters("CharacterID").play("congratulate")
ole_1. O B J E C ters("CharacterID").play("Wave")
cb_d=false
lb_
for ll=1 to upperbound(ole_1. O B J E C ters("CharacterID").animationnames)
lb_m(ole_1. O B J E C ters("CharacterID").animationnames[ll])
next
lb_item(1)
ole_1. O B J E C ters("CharacterID").moveto(0,0)
lb_
end
自定义事件ue_fileexit脚本如下:
close(this)
lb_1clicked事件脚本如下:
cb_d=true
lb_1doubleclicked事件脚本如下:
cb_revent("clicked")
lb_1getfocus事件如下:
cb_t=true
cb_1clicked事件脚本如下:
ole_1. O B J E C ters("CharacterID").stop
="演示动画角色动作:"+lb_edItem ( )
ole_1. O B J E C ters("CharacterID").play(lb_editem)
cb_2clicked事件脚本如下:
ole_1. O B J E C ters("CharacterID").stop
8、编写application对象open事件脚本如下:
open(w_example) 2009-2-12 5:01:36
疯狂代码 /
发布评论