现在的位置: 首页 > 综合 > 正文

[转]Javascript 调用MSAgent(Desc:网页中出现魔法巫师)

2012年05月19日 ⁄ 综合 ⁄ 共 4508字 ⁄ 字号 评论关闭
   (本文假设您使用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>
<!--“欢迎魔法师”代码结束-->

抱歉!评论已关闭.