(本文假設您使用WindowsXP或Windows2000作業系統) 不知在你漫遊互連網時可曾在他開某個網頁時看到一個小巫師,藍色的袍子上滿是金黃的星星和月亮十分可愛。他會向你問好,給你介紹這個網站。你一定奇怪,那個巫師是怎麼做出來的。其實他並不是網頁實現的而是微軟的一個ActiveXObject 叫Microsoft Agent。今天,我們來討論如何在你的網頁中加入這個可愛的Agent(他叫Merlin)。
Microsoft Agent的官方角色除了WindowsXP和2000內建的巫師Merlin,還有需要從http://www.microsoft.com/msagent/downloads/user.asp#character下載的附加界色。他們是瓶中妖怪Genie(還記得那首歌嗎),鸚鵡Peedy和機器人Robby。下載後的檔案是exe檔案,直接運行就可以完成安裝了。
在我們的網頁裡可以通過Javascript調用Agent.Control.2來裝載我們的Agent。具體方法如下: var chName;
var agent;
var ch;
chName = "Merlin";
agent = new ActiveXObject("Agent.Control.2");
agent.Connected = true;
agent.Characters.Load(chName,chName+".acs");
ch = agent.Characters(chName);
代碼解釋:
chName 是我們要用的角色的名字,因為多出要使用它,所以把它儲存成字元型變數了,這裡我們把它定義成了"Merlin"。
agent 為Agent.Control.2指定一個物件變數
agent.Connected = true 用來啟動於Microsoft Agent的串連
agent.Characters.Load() 讀入要使用的角色,他有兩個參數,第一個是角色的姓名,第二個是角色儲存的檔案。
這裡順便說一下,Microsoft Agent角色都儲存在Windows目錄下的MSAgent檔案夾中的chars檔案夾內。一般情況下其檔案名稱與角色名稱是相同的角色檔案的副檔名是.acs。
ch = agent.Characters() 讓ch成為角色的操縱變數,以後我們只要操縱ch就可以讓我們的角色作出各種動作了。比如我們要使用Speak行為就輸入ch.Speak("Hello");
這部分代碼基本上就是個模板,應用時Copy&Paste就Ok了
好了,現在我們角色已經讀入了記憶體。接下來我們來討論一些常用基本角色行為。
基本角色行為(以merlin為例)
show() 使角色顯示在螢幕上。剛剛建立的角色是不能自己現實出來的必須調用show()函數。
hide() 相對於show()的函數,用來讓角色從螢幕上隱藏起來(並不從記憶體中刪除)
speak(words) 讓我們的角色"說話",words的內容會顯示在一個語言氣球內,words為字串
think(words) words的內容會顯示在一個思考氣球內,words為字串
moveto(x,y) 移動到螢幕的(x,y)位置
play(ani) 使用角色動畫ani為字串。其值可以為
Announce Explain Congratulate DontRecongnize Gesturedown Gestureleft Gestureright Gestureup Greet Pleased Read Surprised Idel1_1到Ideal1_4 Idel2_1和Idel2_2
這裡僅僅給出關於Merlin的一部分,具體動畫指令可參看MSDN的Microsoft Agent Animations for ....裡的內容,沒有MSDN的朋友也可以到Microsoft的網站去下載agent的協助檔案。
好了,介紹到這裡Microsoft agent最簡單的應用就已經講完了,下面來看一個例子吧。
程式案例<html>
<body>
<script>
var chName;
var agent;
var Merlin;
chName = "Merlin";
agent = new ActiveXObject("Agent.Control.2");
agent.Connected = true; agent.Characters.Load(chName,chName+".acs");
Merlin = agent.Characters(chName); Merlin.MoveTo(200,200); Merlin.Show();
Merlin.Play("Announce");
Merlin.Speak("歡迎來到detrox的個人首頁");
Merlin.Play("Explain");
Merlin.Speak("咳,這裡收錄了detrox和他朋友的文章。希望您能喜歡。");
Merlin.Play("Idle1_1");
Merlin.Play("Pleased");
Merlin.Speak("請進吧,我的客人");
Merlin.MoveTo(600,300);
Merlin.Play("Surprised");
Merlin.Speak("哦對了,大家最近小心非典。多多注意哦");
Merlin.Play("Idle1_2");
Merlin.Play("GestureUp");
Merlin.Speak("祝您在這裡愉快");
Merlin.Play("Read");
Merlin.Hide();
</script>
</body>
</html>
這裡僅僅講述了Microsoft agent最最簡單用法。Microsoft Agent的目的是為我們提供一個語音命令環境,只是無奈於目前還沒有中文的語言套件,我們還不能體會到他的便利。您可以參考MSDN裡對Agent的語音用法的說明。
動作的說明
Acknowiedge 答謝 Alert 握雙拳警惕
Explain 解說 GetAttention 敲擊螢幕注意
LookLeftBlink 向左眨眼 LookRight 向右看
Searching 搜尋 StarListening 注意聽
Announce 吹喇吧進行宣布 Blink 眨眼
GlanceDown 向下掃視 GlanceLeft 向左掃視
LookRightBlink 向右眨眼 LookUp 向上看
StopListening 停止聽 Suggest 暗示
Confused 煩惱的 Congratulate 祝賀
GlanceRight 向右掃視 GlanceUp 向上掃視
LookUpBlink 向上眨眼 Pleased 高興
Surprised 驚訝 Think 摸鬍子
Decline 拒絕 DoMagic1 魔法一
Greet 問候 LookDown 向下看
Processing 處理 Read 寫一次
Uncertain 不確定 Wave 致意
DoMagic2 魔法二 DontRecognize 笠耳聽
LookDownBlink 向下眨眼 LookLeft 向左看
Reading 反覆寫 Sad 憂愁
Write 寫一次 Writing 反覆寫
eg:
<!--“歡迎魔法師”代碼開始-->
<SCRIPT language="JavaScript">
<!--
function crml(nid)
{
try
{
nid=new ActiveXObject("Agent.Control.2");
nid.Connected = true;
nid.Characters.Load("");
return nid;
}
catch (err)
{
return false;
}
}
function chplay()
{
if (ml=crml ("ml"))
{
var MerlinID;
var MerlinACS;
Merlin = ml.Characters.Character(MerlinID);
Merlin.MoveTo(200,450);
Merlin.Show();
Merlin.Play("Gestureup");
Merlin.Speak("聖誕來臨之際, 周剛 給您獻上真心祝福");
Merlin.Play("Gestureright");
Merlin.Speak("為您捎去聖誕的歡欣");
Merlin.Play("GestureLeft");
Merlin.Speak("讓溫暖縈繞您的心靈");
Merlin.MoveTo(580,457);
Merlin.Play("GestureUp");
Merlin.Speak("願您");
Merlin.Play("GestureRight");
Merlin.Speak("事業健步");
Merlin.Play("GestureLeft");
Merlin.Speak("平凡職場揚眉吐氣");
Merlin.Play("GestureRight");
Merlin.Speak(" 周剛 祝您");
Merlin.Play("GestureLeft");
Merlin.Speak("前程似錦");
Merlin.Play("GestureRight");
Merlin.Speak("薪薪向榮");
Merlin.Play("GestureLeft");
Merlin.Speak("步步高升");
Merlin.Hide();
Merlin.MoveTo(390,460);
Merlin.Show();
Merlin.Play("GestureUp");
Merlin.Speak("祝聖誕快樂");
Merlin.Hide();
}
}
//-->
</SCRIPT>
<SCRIPT language="JavaScript">
<!--
chplay()
--></SCRIPT>
<!--“歡迎魔法師”代碼結束-->