国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Agent插件淺析

2024-07-21 02:07:18
字體:
來源:轉載
供稿:網友
agent插件淺析
      使用過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                 顯示瞌睡的動作
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即可通過聲音輸出設備“說話”
    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()
   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)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南华县| 韩城市| 礼泉县| 屏边| 马边| 襄汾县| 铜陵市| 惠东县| 健康| 湖北省| 行唐县| 六盘水市| 双江| 呼伦贝尔市| 湖州市| 瑞昌市| 吉隆县| 浮山县| 固镇县| 东辽县| 锡林郭勒盟| 陵川县| 普兰县| 孙吴县| 息烽县| 阜南县| 周宁县| 荥经县| 精河县| 蕉岭县| 龙口市| 开阳县| 华蓥市| 都匀市| 桐梓县| 盖州市| 梅州市| 科技| 廊坊市| 乐业县| 阜康市|