<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 154  文章 - 60  trackbacks - 0
    <2008年3月>
    2425262728291
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    聲明:

    該blog是為了收集資料,認識朋友,學習、提高技術,所以本blog的內容除非聲明,否則一律為轉載!!

    感謝那些公開自己技術成果的高人們?。?!

    支持開源,尊重他人的勞動!!

    常用鏈接

    留言簿(3)

    隨筆分類(148)

    隨筆檔案(143)

    收藏夾(2)

    其他

    學習(技術)

    觀察思考(非技術)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    該文被n多網站轉載,沒找到原始出處!

    使用過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(睡衣)共四種動畫角色,專無管教供7^@供|Q{9iL&G育它們不但有豐富的行為動作,而且具有語言功能,其對應的文件名分別為Genie.acs、Robby.acs、Merlin.acs、Peedy.acs。這些Agent角色的常用動畫動作,通常用含有相同意義的英文單詞字符來標識,如下表所示,以下所述編程實例即演示它們分別所產生的動作效果。
    常量   相關動作
    Acknowledge  顯示承認、答謝的動作
    Alert   顯示警告的動作
    Announce                  顯示宣布、
    ?gZ網Fj~r無Wk垠@j{
    通告的工作
    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)
    posted on 2008-03-12 10:23 lk 閱讀(301) 評論(0)  編輯  收藏 所屬分類: other
    主站蜘蛛池模板: 久久亚洲国产成人精品性色| 亚洲欧美日韩自偷自拍| 四虎影永久在线高清免费| a毛片基地免费全部视频| 18以下岁毛片在免费播放| 久久精品电影免费动漫| 两个人日本免费完整版在线观看1| 久久精品国产亚洲av瑜伽| 中文字幕乱码亚洲无线三区 | 看亚洲a级一级毛片| 亚洲毛片一级带毛片基地| 亚洲丝袜美腿视频| 亚洲成a人片在线观| 亚洲人成黄网在线观看| 91丁香亚洲综合社区| 亚洲午夜精品久久久久久app| 国产v亚洲v天堂a无| 婷婷亚洲综合一区二区| 日韩精品免费一线在线观看| 一个人免费观看视频在线中文 | 亚洲精品无码久久久久sm| 国产亚洲精品久久久久秋霞| 亚洲国产精品无码久久一线| 亚洲AV日韩AV永久无码免下载 | 国产高清在线免费视频| 午夜私人影院免费体验区| 成人免费无码精品国产电影| www.91亚洲| 亚洲欧洲自拍拍偷午夜色无码| 亚洲av无码专区在线播放| 亚洲黄色在线观看| 亚洲精品国产第一综合99久久| jizz免费一区二区三区| 亚洲一区二区在线免费观看| 国外成人免费高清激情视频| 亚洲精品无码成人片在线观看 | 亚洲人成在线播放网站岛国| 亚洲手机中文字幕| 亚洲av日韩专区在线观看| a级毛片免费观看视频| 国产2021精品视频免费播放|