程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> Agent插件淺析

Agent插件淺析

編輯:SyBase綜合文章
 使用過Office xp、金山毒霸和瑞星殺毒軟件的朋友,一定會對程序中的人性化的動畫角色留下深刻印象,這完全歸功於微軟推出的Agent(“代理”)技術,Agent采用COM技術,使用ActiveX控件方式,支持現在流行的各種開發工具,不僅可以實現文本的朗讀,而且可識別用戶的語音命令,在應用程序和Html文件中得到廣泛的使用。
下面我們以PowerBuilder 8.0為開發工具來編制一個小實用程序,一步步說明其實現方法:
第一步從Internet網上下載Agent插件,並安裝在計算機上,這是開發的前期准備工作:
這些插件來源於微軟公司的相關網站,下載的網址為:http://www.microsoft.com/msagent/downloads/user.ASP,連接使用該網頁:
1、首先單擊“Download the Microsoft Agent core componts(395kbs exe)”下載並安裝Agent的核心組件,其文件名為“Msagent.exe"。
2、其次單擊(先選擇"SimplifIEd Chinese (127kb exe)”)下載並安裝語言組件,其文件名為“AgtX0804.exe"。
3、其次單擊(先選擇"Lernout & HauspIE TruVoice TTS engine - American English(1Mb exe)”)下載並安裝TTS引擎,其文件名為“tv_enua.exe",要實現語音朗讀,必須安裝,當前版本支持英語。
4、再其次單擊(先選擇"Doadload the Microsoft Speech Recognition Engine(6Mb exe)”)下載並安裝語音識別引擎,其文件名為“Actcnc.exe",要實現語音命令識別,必須安裝,當前版本支持英語。
5、最後單擊“Download selected character"下載安裝要用到的動畫角色文件,在這裡我們下載微軟公司網站所提供的動畫角色文件,主要包括Genie(妖怪、鬼)、Robby(機器人)、Merlin、Peedy(睡衣)共四種動畫角色,它們不但有豐富的行為動作,而且具有語言功能,其對應的文件名分別為GenIE.acs、Robby.acs、Merlin.acs、Peedy.acs。這些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 &nb
您正在看的Sybase教程是:Agent插件淺析。sp; 顯示瞌睡的動作
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 顯示停止寫的動作
當然,我們也可以從http://www.microsoft.com/msagent/downloads/developer.ASP網頁單擊“Download the
Microsoft Agent Character Editor(1Mb exe)”和“Download the Microsoft Agent Linguistic Information
Sound Editing Tool(6.2Mb exe)”下載制作工具,親自制作自己所鐘愛的動畫角色形象。
第二步設計應用程序
在PowerBuilder中提供了OLE控件,以便PowerBuilder應用程序能夠使用其它開發工具編寫的COM組件和ActiveX控件
在使用相關的COM組件和ActiveX控件先,須注冊相關的COM組件和ActiveX控件,在PowerBuilder注冊控件,可以在PowerBulider
開發環境中,插入OLE控件時,選擇Regisiter New進行注冊。
Agent控件的主要屬性如下表:
屬性 用途
Charactors 用於設置與控件相關聯的動畫角色文件
Connected 用於判別控件是否與Agent服務器相連接
LanguageID 用於設置Agent所使用的語言,

目前僅可設置為十六進制的“409”,即“&H409”
Agent控件的主要方法如下表:
方法 用途
Load 用於初始化Agent控件,並加載動畫角色數據文件
UnLoad 用於卸載動畫角色數據文件
Show 用於顯示的Agent動畫角色,並可通過參數控制動畫角色的顯示速度
Hide 用於隱藏的Agent動畫角色,並可通過參數控制動畫角色的隱藏速度
StopAll 用於停止動畫角色的所有動作
Stop 用於停止動畫角色的當前動作
MoveTo 用於移動動畫角色,可通過參數來設置移動的坐標和移動的速度
Interrupt 用於中斷動畫角色的動畫,在執行一些有持續性的動畫動作時,如不
中斷該動作即執行下一個動作,會產生異常現象
Wait 用於在多個動畫角色間實現相互之間的動作協調
Play 用於執行指定的動畫動作,可通過參數來設置動畫類型
Speak 用於通過語音合成引擎,實現英語的語音合成輸出功能,即只需要輸入
英文字符串,Agent即可通過聲音輸出設備“說話”


您正在看的Sybase教程是:Agent插件淺析。 Agent控件的主要事件如下表
事件 用途
Show 在Agent動畫角色顯示時觸發,可利用該事件將程序的主界面隱藏
Hide 在Agent動畫角色隱藏時觸發,可利用該事件將程序的主界面重新顯示
在PowerBuilder中實現的步驟如下
1、新建myexample.pbw的工作區;
2、新建myexample.pbt的應用目標,PowerBuilder會自動建立一個pbl庫文件以便存放相關的PowerBuilder對象,並建立一個myexample
應用程序對象;
3、新建窗口對象w_example,並在其上放置控件如下表:
控件 控件名稱
listbox lb_1
commandbutton cb_1
commandbutton cb_2
ole control ole_1(並插入對應的Agent ActiveX控件)
4、新建菜單對象m_file,並添加相關菜單項如下表:
菜單名 菜單文本 菜單腳本
m_file 文件(&F)
m_fileopen 打開(&O) parentwindow.triggerevent("ue_fileopen")
m_bar1 -
m_fileexit 退出(&E) parentwindow.triggerevent("ue_fileexit")
5、將窗口對象w_example的menuid屬性設置為m_file
6、定義窗口w_example的實例變量如下:
privite:
boolean ib_flag
string is_animationname
7、編寫窗口w_example相關事件腳本:
open事件腳本如下:
long result,ll
if fileexists(GetCurrentDirectory ( )+"\peedy.acs")=false then
result=messagebox("提示“,"在程序當前目錄下沒有動畫角色文件",stop!)
ib_flag=false
close(this)
else
ib_flag=true
ole_1. O B J E C T.characters.load("CharacterID",GetCurrentDirectory ( )+"\peedy.acs")
ole_1. O B J E C T.characters("CharacterID").languageID=1033
ole_1. O B J E C T.characters("CharacterID").moveto(20,20)
ole_1. O B J E C T.characters("CharacterID").show()
ole_1. O B J E C T.characters("CharacterID").play("Wave")
ole_1. O B J E C T.characters("CharacterID").speak("Hello,Welcome to use The Character Animation PrevIEwer Programm!")
ole_1. O B J E C T.characters("CharacterID").play

("Reading")
lb_1.reset()
for ll=1 to upperbound(ole_1. O B J E C T.characters("CharacterID").animationnames)
lb_1.additem(ole_1. O B J E C T.characters("CharacterID").animationnames[ll])
next
lb_1.selectitem(1)
close事件腳本如下:
if ib_flag=true then
ole_1. O B J E C T.characters("CharacterID").hide()
ole_1. O B J E C T.characters.unload("CharacterID")
end if
自定義事件ue_fileopen的腳本如下:
string docname, named
integer value
value = GetFileOpenName("選擇動畫角色文件",docname, named, "acs", "動畫角色文件(*.acs),*.acs" )
IF value = 1 THEN
ole_1. O B J E C T.characters.unload("CharacterID")
ole_1. O B J E C T.characters.load("CharacterID",docname)
ole_1. O B J E C T.characters("CharacterID").languageID=1033
ole_1. O B J E C T.characters("CharacterID").moveto(20,20)
ole_1. O B J E C T.characters("CharacterID").show()

您正在看的Sybase教程是:Agent插件淺析。> ole_1. O B J E C T.characters("CharacterID").speak("Hello!")
ole_1. O B J E C T.characters("CharacterID").play("congratulate")
ole_1. O B J E C T.characters("CharacterID").play("Wave")
cb_1.enabled=false
lb_1.reset()
for ll=1 to upperbound(ole_1. O B J E C T.characters("CharacterID").animationnames)
lb_1.additem(ole_1. O B J E C T.characters("CharacterID").animationnames[ll])
next
lb_1.selectitem(1)
ole_1. O B J E C T.characters("CharacterID").moveto(0,0)
lb_1.setfocus()
end if
自定義事件ue_fileexit的腳本如下:
close(this)
lb_1的clicked事件腳本如下:
cb_1.enabled=true
lb_1的doubleclicked事件腳本如下:
cb_1.triggerevent("clicked")
lb_1的getfocus事件如下:
cb_1.default=true
cb_1的clicked事件腳本如下:
ole_1. O B J E C T.characters("CharacterID").stop
this.title="演示動畫角色動作:"+lb_1.SelectedItem ( )
ole_1. O B J E C T.characters("CharacterID").play(lb_1.selecteditem())
cb_2的clicked事件腳本如下:
ole_1. O B J E C T.characters("CharacterID").stop()
8、編寫application對象open事件腳本如下:
open(w_example)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved