Javascript 调用MSAgent

Javascript 调用MSAgent(本文假设您使用WindowsXP或Windows2000操作系统)不知在你漫游互联网时可曾在他开某个网页时看到一个小巫师,蓝色的袍子上满是金黄的星星和月亮十分可爱。他会向你问好,给你介绍这个网站。你一定奇怪,那个巫师是怎么做出来的。其实他并不是网页实现的而是微软的一个ActiveXObject叫MicrosoftAgent。今天,我们来讨论如何在你的网页中加入这个可爱的Agent(他叫Me…

大家好,又见面了,我是你们的朋友全栈君。

(本文假设您使用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>
<!–“欢迎魔法师”代码结束–>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148304.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ntp服务器地址是什么协议,ntp服务器地址的介绍与解释

    ntp服务器地址是什么协议,ntp服务器地址的介绍与解释ntp服务器地址的介绍与解释分类:云服务资讯编辑:浏览量:1002021-07-2314:43:16NTP属于运用层协议(依据UDP传输,运用的端口号为123),用来同步网络中分布式时间服务器和客户端之间的时间,使网络中的设备供应依据一起时间的运用成为可能。时间服务器和客户端是相对的。供应时间规范的设备为时间服务器,接收时间服务的设备为时间客户端。设备运转NTP之后,通过沟通NTP报文,既可以作…

  • C语言 — void的用法解析[通俗易懂]

    C语言 — void的用法解析[通俗易懂]C语言-void的用法解析简介​ void中文翻译为”无类型”,有的也叫”空类型”。常用在程序中对定义函数的参数类型、返回值、函数中指针类型进行声明。用法​ void应用最广泛的就是跟指针结合,即void* //无类型指针,也称为空指针,可以指向任何类型的数据 //注意一点:当我们需要使用void类型的的指针变量区指向 某一类型的变量的时候,必须要对其进行类型转换​ 这里补充一点:因为我们在定义一个指针变量的时候第一件事就是指定我们指针变量所指向的变量的类型。一

  • Linux内核概述

    Linux内核概述前言1.1随便先说下Linux内核非常庞大,我说的非常大并不是为了吓唬大家,确实是非常多的代码,超过600万行的代码,所以我写文章介绍Linux内核,也不可能每一行代码去分析,但是我会

  • JavaScript像数组添加元素并排序「建议收藏」

    JavaScript像数组添加元素并排序「建议收藏」最近用jscharts做图如上图,柱形排列是没有规律的,将它做出如下调整因为jscharts做表,是使用数组存储数据//准备数据varmyData=newArray([‘Asia’,437,520],[‘Europe’,322,390],[‘NorthAmerica’,233,286],[‘LatinAmerica’,110,162],[‘Afric

  • DOS命令COPY与XCOPY有什么区别「建议收藏」

    DOS命令COPY与XCOPY有什么区别「建议收藏」内部命令COPY与外部命令XCOPY在作用及使用方法上有什么区别?首先说一下内外部命令的区别,内部命令是在启动DOS后调入计算机内存中常驻的,外部命令是刻在磁盘上面的,使用时内部命令可以在每一个盘符下从内存直接执行,而外部命令执行时除了外部命令所在目录及设定好路径的盘符下执行外,在其它位置执行都需要指明此命令所在路径,执行时都是从磁盘调入内存来执行。至于COPY和XCOPY的区别是:用

  • bootstrap 模态窗和datepicker搭配,清空form问题

    bootstrap模态窗和datepicker搭配,清空form问题

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号