第 2/2 頁      上一頁 
start.gif (4310 bytes) 主題之產品項目名稱
秘笈主題 - 親愛的主人,休息一下吧! 中美通電腦顧問(股)公司資深顧問
陳若驄先生 提供
[email protected]
Trans.gif (821 bytes)
按一下可以看得更仔細喔  在Agent物件下的Characters是一個群集,使用Characters的Load方法,可以指定載入一個.ACS的演員檔案,並建立一個以第一個參數命名的Character物件。不過在Agent的物件類別名稱中,Character的類別名稱是IAgentCtlCharacter,所以如果要宣告一個物件來承接這個Character物件,則必須將物件的類別宣告為IAgentCtlCharacter類別。取得Character物件之後,便可以控制他的一舉一動了。上面的範例中,使用的是Genie.acs檔案,所以呼叫出來的是阿拉丁神燈中的精靈。(如圖9)

  載入精靈之後,便可以由你的程式來操控精靈了。可以使用的基本命令如下:
Show 顯示你的演員
Hide 隱藏你的演員
Speak 讓你的演員說話
Play 讓你的演員演戲
Moveto
移動你的演員到新的位置

  所以你可以使用下面的範例來顯示與隱藏演員:

Genie.Show ==> 顯示演員
Genie,Hide ==> 隱藏演員

  酷吧!

按一下可以看得更仔細喔  除此,你也可以讓你的演員一動到你指定的位置。請注意,Agent的演員其實是由Agent Server控制的,所以他的位置是以整個螢幕為座標,而不是你的表單。想把演員移動到任何位置,可以使用下面的敘述:

Genie.Moveto 300,200

上面的敘述,將會讓你的演員移動到螢幕座標(300,200)的地方。(如圖10)

  

按一下可以看得更仔細喔  接著你就可以讓你的演員說話了。使用Speak方法,可以輕易地讓演員開口,只要將你希望演員說的台詞當成字串,丟給演員就可以了:

Genie.Speak "Hello World!"

  Agent Server會自動的將字串轉換成語音輸出(如圖11)。不過,目前只支援英文,所以別輸入了中文,然後在那裡奇怪,為什麼精靈忽然開始念經了。

  當演員開始說話時,在演員的身邊會出現一個氣球,像漫畫一樣,你輸入的字串,會直接顯示在這裡。那麼,有沒有辦法可以讓演員說點中文呢?答案是,勉強。你可以讓精靈以羅馬拼音的方式來工作,聽起來就像是老外說中文一樣,怪聲怪調。聲音怪還可以接受,但是氣球裡的文字怎麼辦?

 

按一下可以看得更仔細喔  其實在Speak後面的字串可以加上一些特殊的標籤,提供一些額外的功能,例如,在字串中加上"\CHR=Whisper\"的標籤(不含前後的雙引號),可以讓演員用耳語(比較小聲)的方式說話。在眾標籤中,有一個標籤叫做MAP,利用這個標籤,可以使說的話與顯示的文字不一樣。使用下面的敘述:

Genie.Speak "\MAP=""sha sha ny""=""謝謝你""\"

  可愛的精靈會說『謝謝你』,中文喔(如圖12)!而且氣球中顯示的也是『謝謝你』。
除了能說,Agent還能演,在每一個演員檔案中,都定義了這個演員可以演的動作,例如:

Genie.Play "Greet"
Genie.Speak "please take a break, you have working about 40 minutes"
Genie.Play "GreetReturn"

按一下可以看得更仔細喔  可以讓精靈先對你鞠個恭,說句話,在回到原來的姿勢,不錯吧!(如圖13)


  

  有了上面的幾個基本動作,咱們的程式便可以開工了。為了顧及電腦使用者的健康,每四十分鐘休息一下,所以你可以在程式中加入一個小功能,利用Timer控制項,每四十分鐘讓精靈出來,請主人休息休息,所以下面的程式便可以派上用場了。


Private Genie As IAgentCtlCharacter
Private TBMin As Integer
Const DATAPATH = "\program files\microsoft agent\chars\genie.acs"

Private Sub Agent1_Click(ByVal CharacterID As String, ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Integer, ByVal y As Integer)
Genie.Hide
End Sub

Private Sub Form_Load()
Agent1.Characters.Load "Genie", DATAPATH
Set Genie = Agent1.Characters("Genie")
TBMin = 40
End Sub

Private Sub ShowTakeBreak()
Genie.Show
Genie.Play "Greet"
Genie.Speak "please take a break, you have working about 40 minutes"
    Genie.Play "GreetReturn"
End Sub

Private Sub Timer1_Timer()
Static Min As Integer
Min = Min + 1
If Min >= TBMin Then
Min = 0
ShowTakeBreak
End If
End Sub

 

 

按一下可以看得更仔細喔  其在表單中加入一個Agent控制項,以及一個Timer控制項,將Timer的Interval屬性設為60000,所以Timer每隔一分鐘,會送一次Timer Event,觸發Timer_Timer()的事件程序,程序中只要發現超過40分鐘,便會執行ShowTakeBreak的程序,程序中將會讓一開始在Form_Load中所載入的精靈顯示,鞠躬,說句請休息的話,還原,但是要等到你用滑鼠按一下精靈之後,才會隱藏起來。

  嚴格來講,這個程式沒有什麼技巧,純粹是展示Agent的基本功能,筆者希望藉由這個程式,讓大家知道這個有趣的小東西,也許進而可以延伸出一些好玩的創意。文中所提到的Microsoft Agent的完整文件,你可以在Internet Client SDK中找到,Microsoft Press也將這些文件出版成書了,有興趣的話可以找來參考一下。甚至更進一步的,你也可以建立自己的演員(如果你對3D立體繪圖在行的話),因為在Internet Client SDK中也提供了編輯器,讓你建立自己的演員檔。

  還記得Office 97中的那隻狗嗎?玩過Microsoft Agent之後,筆者在想,這個跟Office結合起來,似乎更有趣吧,還有,Agent 可以一次使用好幾個演員,如果可以寫一段讓兩個演員說相聲的程式,例如電腦教學,似乎比現在的卡通要好玩多了。(圖14)

  

第 2/2 頁 ▲上一頁