当前位置:首页>>软件教程>>新闻内容  
给网页添加WORD角色动画
作者:康祥顺 发布时间:2003-12-19 10:28:38 | 【字体:

  当你打开Microsoft Word后,画面上就会出现一个Office 助手,看着孙悟空不但会不停地变换角色,而且还会根据情况,出现相应的提示信息(如图1)。并且都始终显示在最上面,比起菜单、按钮、提示框等大家非常熟悉的人机交互界面来说,不但界面简洁明了,而且交互性更强,更具人性化,这就是Agent角色互动。

  如果你的软件或者主页上也采用角色互动卡通画来显示帮助信息,也许会更具吸引力和竞争力。动心了吧,别着急,跟我来看个究竟。

  这种角色互动卡通画是由Microsoft Agent软件制作而成,它可以扮演向导、娱乐节目主持人、助手、送信人等角色。它具有简洁的操作界面、更具人性化的交互功能和简便统一的编程方法。

  Agent现在已发展到2.0版,作为一种应用程序服务器,主要是提供一种易于理解和使用的操作界面,接受用户指令、代替用户完成某些繁杂工作,或者为用户提供帮助。它具有其他工具所无法比拟的优点:

  1. 采用基于COM的ActivX控件方式,因此它可以很容易加入到应用程序中,改善用户操作界面。

  2. Agent动画角色具有生动、有趣的动作。其本身是一个“AlwaysOnTop”窗口,只显示角色动画本身,隐藏窗口背景,视觉效果更好。

  3. 结合了语音功能,角色动画不仅能说话,而且还会根据用户发出的声音指令加以识别和执行。


  所需组件的安装


  要发挥Agent角色动画的作用,必须安装相应的组件,但是如果你的系统是Windows 2000/XP的话,就可以不用安装下面的组件,系统已经预装了;如果没有安装,可以到微软网站下载安装程序(http://www.microsoft.com/products/msagent/downloads.htm),然后自解压执行安装。

  1. Agent服务器程序(AgentSVR.EXE):运行于Windows平台,为其他调用Agent服务的客户程序提供服务,是Agent的核心组件(C:\WINNT\MSAgent\AgentSVR.EXE)。

  2. TTS引擎:TTS引擎将文本转换为声音并输出到音频设备中,Agent将根据该引擎输出的声音控制动画的口型变化 (C:\PROGRAM FILES\ COMMON FILES\SPEECH ENGINES \MICROSOFT\TTS)。

  3. Agent角色数据文件:存储有角色信息(提示信息框的格式、命令、图片、声音文件等);用户也可以用角色编辑器(ACE.EXE)编辑自己的角色数据文件(C:\WINNT\MSAgent\ CHARS\MERLIN.ACS;C:\WINNT\ SRCHASST\CHARS\COURTNEY.ACS,\EARL.ACS,\ROVER.ACS)。

  4. 语音识别引擎(SPEECH ENGINE):处理用户从音频设备中传入的语音命令,以进行语音输入/输出处理(控制面板→声音、语音和音频设备→语音)。


   Agen的基本属性


  CHARacters:其类型为IAgentCHARACTEREX,取得角色句柄;

  CHARacter:CHARACTERS的一个属性,通过CHARACTERID取得角色句柄;

  CHARacterid:代表特定的角色动画,如MERLIN、GINIE、ROVER等Windows 2000、Office2000以及以上版本所提供的四种角色动画,其扩展名为.ACS或者.ACG;

  Show:控制角色动画的显示,参数Speed为整形变量,代表显示的速度;

  Hide:隐藏动画角色,参数CHARacterid,指定隐藏的对象;

  Moveto:移动动画角色到指定位置,参数(X,Y)为指定的位置;

  Play:控制角色执行指定的动画,参数Animation表示动画名称,存储于角色数据文件里;

  Speak:通过TTS引擎和语音识别引擎读指定文本,目前不支持中文。参数为指定的文本内容,同时可以在文本中通过加标记TAG控制文本阅读时的语气、强调字符串、停顿时间、阅读的速度;语气标记‘\CHR=WHISFER(NORMAL\MONOTONE’,强调字符串‘\EMP\强调字符’,停顿时间’\PAU=停顿时间(以毫秒为单位)\’,阅读速度’\SPD=速度\’,另外还有其它是一种标记,可以找Microsoft网站查找,每一分离的字符串都用双引号加以表示;

  Languageid:指定语言种类,整形变量,0X409代表美式英语,0X804代表中文。


   角色动画实例


  准备工作已经完成,现在我们就立即来着手在应用成程序中做一个角色动画效果(注:本文为了便于演示,应用程序仅包括一个窗口,编程工具采用VFP7.0)。

  1. 安装Agent控件:选择菜单工具“选项”,在ActiveX列表框中选择Microsoft Aent Control 2.0,安装在工具面板上。

  2. 新建一应用程序,仅需一个表单,如图2。

  图2 表单设计样式

  3. 调用角色数据:

  载入动画角色

  ThisForm.Olecontrol1.Characters.Load("merlin", "merlin.ACS")

  oChar = ThisForm.Olecontrol1.Characters("merlin")

  oChar.MoveTo(RAND()*600, RAND()*600)

  oChar.Show

  *将角色数据文件中的动画名称加入动画文件列表框,有许多动画在文件中不能找到,因此通过载入动画名称让用户选择。

  For Each cAnimName in oChar.AnimationNames

  ThisForm.AnimNames.AddItem(cAnimName)

  ochar.play(canimname)*可能有的动画循环播放,因此有的动画可能无法显示。

  EndFor

  开场介绍

  ochar.languageid=0x409

  oChar.Speak("Hello \emp\there!|Hey, \pau=600\all you boys and girls.|Greetings, and felicitations.")

  oChar.Speak("Welcome to DevCon, my friends.")

  播放指定的角色动画

  OChar.Play(ThisForm.lbxAnimNames.DisplayValue)

  阅读指定文本

  oChar.languageid=0x409*指定语言种类,0X409代表美式英语

  oChar.Speak(ThisForm.txtSpeak.Value')

  由于TTS引擎不支持中文,因此如果要阅读中文,可以按如下方法:

  将要阅读的汉语文本通过录音制作成WAV文件,如SNDFILE.WAV

  oChar.languageid=0x804;//指定语言种类,0X804代表中文

  oChar.speak(‘你好!’,’SNDFILE.WAV’);//SNDFILE.WAV及为制作的声音文件

  停止循环播放的动画

  oChar.Stop

  卸载动画角色

  With ThisForm

   .Olecontrol1.Characters.Unload("merlin")

   .AnimNames.Clear

  Endwith

  加载阅读文本,也可以直接输入内容

  Cfile=Getfile()

  Nhandle=Fopen(Cfile)

  Hend=Fseek(Nhandle,0,2)

  If Hend<=0

  Messagebox("文件无法打开!",16,"提示窗口")

  Return

  Else

  =Fseek(Nhandle,0,0)

  Cstring=Fread(Nhandle,Hend)

  =Fclose(Nhandle)

  Endif

  Thisform.Txtspeak.Value=Cstring

  综合演示

  Ochar.Languageid=0x409

  With Ochar

   .Play("Greet")

   .Play("Restpose")

   .Speak("Hello!")

   .Play("Announce")

   .Speak("I Am Merlin.")

   .Play("Pleased")

   .Speak("It Is Nice To Meet You!")

   .Moveto(250,500)

   .Speak("Now,Here Is A Magic Trick.")

   .Play("Domagic1")

   .Play("Domagic2")

   .Play("Pleased")

   .Play("Restpose")

   .Speak("Thank You!")

   .Play("Wave")

   .Speak("Goodbye")

   .Play("Hide")

   Endwith

  关闭表单

  Thisform.Release

 
  综合演示效果如图3。


文章来源:cce
 放生
 愚爱
 够爱
 触电
 白狐
 葬爱
 光荣
 画心
 火花
 稻香
 小酒窝
 下雨天
 右手边
 安静了
 魔杰座
 你不像她
 边做边爱
 擦肩而过
 我的答铃
 怀念过去
 等一分钟
 放手去爱
 冰河时代
 你的承诺
 自由飞翔
 原谅我一次
 吻的太逼真
 左眼皮跳跳
 做你的爱人
 一定要爱你
 飞向别人的床
 爱上别人的人
 感动天感动地
 心在跳情在烧
 玫瑰花的葬礼
 有没有人告诉你
 即使知道要见面
 爱上你是一个错
 最后一次的温柔
 爱上你是我的错
 怎么会狠心伤害我
 不是因为寂寞才想
 亲爱的那不是爱情
 难道爱一个人有错
 寂寞的时候说爱我