當你打開Microsoft Word后,畫面上就會出現(xiàn)一個Office 助手,看著孫悟空不但會不停地變換角色,而且還會根據(jù)情況,出現(xiàn)相應的提示信息(如圖1)。并且都始終顯示在最上面,比起菜單、按鈕、提示框等大家非常熟悉的人機交互界面來說,不但界面簡潔明了,而且交互性更強,更具人性化,這就是Agent角色互動。

如果你的軟件或者主頁上也采用角色互動卡通畫來顯示幫助信息,也許會更具吸引力和競爭力。動心了吧,別著急,跟我來看個究竟。
這種角色互動卡通畫是由Microsoft Agent軟件制作而成,它可以扮演向導、娛樂節(jié)目主持人、助手、送信人等角色。它具有簡潔的操作界面、更具人性化的交互功能和簡便統(tǒng)一的編程方法。
Agent現(xiàn)在已發(fā)展到2.0版,作為一種應用程序服務器,主要是提供一種易于理解和使用的操作界面,接受用戶指令、代替用戶完成某些繁雜工作,或者為用戶提供幫助。它具有其他工具所無法比擬的優(yōu)點:
1. 采用基于COM的ActivX控件方式,因此它可以很容易加入到應用程序中,改善用戶操作界面。
2. Agent動畫角色具有生動、有趣的動作。其本身是一個“AlwaysOnTop”窗口,只顯示角色動畫本身,隱藏窗口背景,視覺效果更好。
3. 結合了語音功能,角色動畫不僅能說話,而且還會根據(jù)用戶發(fā)出的聲音指令加以識別和執(zhí)行。
所需組件的安裝
要發(fā)揮Agent角色動畫的作用,必須安裝相應的組件,但是如果你的系統(tǒng)是Windows 2000/XP的話,就可以不用安裝下面的組件,系統(tǒng)已經(jīng)預裝了;如果沒有安裝,可以到微軟網(wǎng)站下載安裝程序(http://www.microsoft.com/products/msagent/downloads.htm),然后自解壓執(zhí)行安裝。
1. Agent服務器程序(AgentSVR.EXE):運行于Windows平臺,為其他調用Agent服務的客戶程序提供服務,是Agent的核心組件(C:\WINNT\MSAgent\AgentSVR.EXE)。
2. TTS引擎:TTS引擎將文本轉換為聲音并輸出到音頻設備中,Agent將根據(jù)該引擎輸出的聲音控制動畫的口型變化 (C:\PROGRAM FILES\ COMMON FILES\SPEECH ENGINES \MICROSOFT\TTS)。
3. Agent角色數(shù)據(jù)文件:存儲有角色信息(提示信息框的格式、命令、圖片、聲音文件等);用戶也可以用角色編輯器(ACE.EXE)編輯自己的角色數(shù)據(jù)文件(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:控制角色動畫的顯示,參數(shù)Speed為整形變量,代表顯示的速度;
Hide:隱藏動畫角色,參數(shù)CHARacterid,指定隱藏的對象;
Moveto:移動動畫角色到指定位置,參數(shù)(X,Y)為指定的位置;
Play:控制角色執(zhí)行指定的動畫,參數(shù)Animation表示動畫名稱,存儲于角色數(shù)據(jù)文件里;
Speak:通過TTS引擎和語音識別引擎讀指定文本,目前不支持中文。參數(shù)為指定的文本內容,同時可以在文本中通過加標記TAG控制文本閱讀時的語氣、強調字符串、停頓時間、閱讀的速度;語氣標記‘\CHR=WHISFER(NORMAL\MONOTONE’,強調字符串‘\EMP\強調字符’,停頓時間’\PAU=停頓時間(以毫秒為單位)\’,閱讀速度’\SPD=速度\’,另外還有其它是一種標記,可以找Microsoft網(wǎng)站查找,每一分離的字符串都用雙引號加以表示;
Languageid:指定語言種類,整形變量,0X409代表美式英語,0X804代表中文。
角色動畫實例
準備工作已經(jīng)完成,現(xiàn)在我們就立即來著手在應用成程序中做一個角色動畫效果(注:本文為了便于演示,應用程序僅包括一個窗口,編程工具采用VFP7.0)。
1. 安裝Agent控件:選擇菜單工具“選項”,在ActiveX列表框中選擇Microsoft Aent Control 2.0,安裝在工具面板上。
2. 新建一應用程序,僅需一個表單,如圖2。

圖2 表單設計樣式
3. 調用角色數(shù)據(jù):
載入動畫角色
ThisForm.Olecontrol1.Characters.Load("merlin", "merlin.ACS")
oChar = ThisForm.Olecontrol1.Characters("merlin")
oChar.MoveTo(RAND()*600, RAND()*600)
oChar.Show
*將角色數(shù)據(jù)文件中的動畫名稱加入動畫文件列表框,有許多動畫在文件中不能找到,因此通過載入動畫名稱讓用戶選擇。
For Each cAnimName in oChar.AnimationNames
ThisForm.AnimNames.AddItem(cAnimName)
ochar.play(canimname)*可能有的動畫循環(huán)播放,因此有的動畫可能無法顯示。
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及為制作的聲音文件
停止循環(huán)播放的動畫
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。
