MSAgent 详细解说(三)

三、活灵活现
总是看着一个呆头呆脑的东西一动不动,即使是很 Q ,也会有感到多少的厌烦,下面我们就让他动起来。
这个例子由于调用的是网络文件,所以会慢一点,请耐心等待一下!

1<object classid="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" id="MSAgent" style="visibility:hidden"></object>
 1<script language="JavaScript">   
 2//Coded by Windy_sk < [email protected] > 20040214 
 3
 4var Agent = null;   
 5var AgentID = "Merlin";   
 6var AgentACS = " http://agent.microsoft.com/agent2/chars/merlin/merlin.acf ";   
 7var AgentStates = "Showing, Hiding, Speaking, Moving";   
 8var AgentAnimations = "GetAttention, GetAttentionReturn, Congratulate, Acknowledge, Read, WriteContinued, WriteReturn, wave";   
 9var AgentLoadRequest, AgentStateRequest, AgentAnimationRequest; 
10
11MSAgent.Connected = true;   
12AgentLoadRequest = MSAgent.Characters.Load(AgentID,AgentACS);   
13Agent = MSAgent.Characters.Character(AgentID);   
14Agent.LanguageID = 0x0409; 
15
16AgentStateRequest = Agent.get("state", AgentStates);   
17AgentAnimationRequest = Agent.get("animation", AgentAnimations); 
18
19Agent.Show();   
20Agent.MoveTo(400,300);   
21Agent.Play("GetAttention");   
22Agent.Play("GetAttentionReturn");   
23Agent.speak("Hi, may I have your attention, please?");   
24Agent.Play("Congratulate");   
25Agent.speak("So nice to meet you!");   
26Agent.Play("Think");   
27Agent.speak("How do think about me?");   
28Agent.Play("Acknowledge");   
29Agent.Speak("It's very cool, ya?");   
30Agent.Play("Read");   
31Agent.Play("WriteContinued");   
32Agent.Play("WriteReturn");   
33Agent.Speak("Oh, I have lots of things to do, see you !");   
34Agent.Play("wave");   
35Agent.Speak("Bye-bye!");   
36Agent.Hide();   
37</script>

看到没有?其实只要你善于调动它的积极性,MSAgent 也蛮活泼的!信息观察,不难发现,原来让 MSAgent 动起来,也不过就这么简单:
Agent.MoveTo(x, y) 是角色移动到指定的坐标;
Agent.Play(action) 命令角色做某个动作,动作列表见: msdn.microsoft.com/library/default.asp?url=/library/en-us/msagent/deschar_3pgy.asp (这里需要说明一下,不是所有的角色都支持这些动作的,处理方法后面会有说明!)

Agent.Hide() 隐藏角色(不是释放角色,通过 Agent.Show() 可以再次显示)
Agent.get(Request, list) 预载相关 MSAgent 动画数据,MSAgent人物数据文件支持单结构角色文件(.acs,角色数据与动画数据存于同一个文件),也支持分离结构角色文件(.acf,角色数据存于.acf中,动画数据存于.aca中)。基于本地硬盘和网络调用均可采用这两种模式,当调用网络 acf 文件时,由于角色数据与动画数据分别下载,所以需要预载相关动画数据,使用 acs 文件(一般没有本地 acf 文件的可能性),不需要预载。

AgentLoadRequest, AgentLoadRequest 和 AgentAnimationRequest 这三个参数本例并没有实际用到,返回应相关操作的状态对象(相当于 readystatus 属性),在调用网络 acf 文件时有比较实际的用途,这个会在后面说明!

Published At
Categories with 网页设计
Tagged with
comments powered by Disqus