有点傻 发表于 2008-12-3 09:53:11

MSAgent 详细解说(三)

<P>三、活灵活现<BR>总是看着一个呆头呆脑的东西一动不动,即使是很 Q ,也会有感到多少的厌烦,下面我们就让他动起来。<BR>这个例子由于调用的是网络文件,所以会慢一点,请耐心等待一下!</P><FIELDSET style="COLOR: #808080" align=center><P>&lt;object style="visibility:hidden" id="MSAgent" classid="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F"&gt;&lt;/object&gt; <BR>&lt;script language="JavaScript"&gt;<BR>//Coded by Windy_sk &lt;<A href="mailto:windy_sk@126.com">windy_sk@126.com</A>&gt; 20040214</P><P>var Agent = null;<BR>var AgentID = "Merlin";<BR>var AgentACS = "<A href="http://agent.microsoft.com/agent2/chars/merlin/merlin.acf">http://agent.microsoft.com/agent2/chars/merlin/merlin.acf</A>";<BR>var AgentStates = "Showing, Hiding, Speaking, Moving";<BR>var AgentAnimations = "GetAttention, GetAttentionReturn, Congratulate, Acknowledge, Read, WriteContinued, WriteReturn, wave";<BR>var AgentLoadRequest, AgentStateRequest, AgentAnimationRequest;</P><P>MSAgent.Connected = true;<BR>AgentLoadRequest = MSAgent.Characters.Load(AgentID,AgentACS);<BR>Agent = MSAgent.Characters.Character(AgentID);<BR>Agent.LanguageID = 0x0409;</P><P>AgentStateRequest = Agent.get("state", AgentStates); <BR>AgentAnimationRequest = Agent.get("animation", AgentAnimations);</P><P>Agent.Show();<BR>Agent.MoveTo(400,300);<BR>Agent.Play("GetAttention");<BR>Agent.Play("GetAttentionReturn");<BR>Agent.speak("Hi, may I have your attention, please?");<BR>Agent.Play("Congratulate");<BR>Agent.speak("So nice to meet you!");<BR>Agent.Play("Think");<BR>Agent.speak("How do think about me?");<BR>Agent.Play("Acknowledge");<BR>Agent.Speak("It's very cool, ya?");<BR>Agent.Play("Read");<BR>Agent.Play("WriteContinued");<BR>Agent.Play("WriteReturn");<BR>Agent.Speak("Oh, I have lots of things to do, see you !");<BR>Agent.Play("wave");<BR>Agent.Speak("Bye-bye!");<BR>Agent.Hide();<BR>&lt;/script&gt;<BR></P></FIELDSET> <P> 看到没有?其实只要你善于调动它的积极性,MSAgent 也蛮活泼的!信息观察,不难发现,原来让 MSAgent 动起来,也不过就这么简单:<BR>Agent.MoveTo(x, y) 是角色移动到指定的坐标;<BR>Agent.Play(action) 命令角色做某个动作,动作列表见: msdn.microsoft.com/library/default.asp?url=/library/en-us/msagent/deschar_3pgy.asp (这里需要说明一下,不是所有的角色都支持这些动作的,处理方法后面会有说明!)</P><P>Agent.Hide() 隐藏角色(不是释放角色,通过 Agent.Show() 可以再次显示)<BR>Agent.get(Request, list) 预载相关 MSAgent 动画数据,MSAgent人物数据文件支持单结构角色文件(.acs,角色数据与动画数据存于同一个文件),也支持分离结构角色文件(.acf,角色数据存于.acf中,动画数据存于.aca中)。基于本地硬盘和网络调用均可采用这两种模式,当调用网络 acf 文件时,由于角色数据与动画数据分别下载,所以需要预载相关动画数据,使用 acs 文件(一般没有本地 acf 文件的可能性),不需要预载。</P><P>AgentLoadRequest, AgentLoadRequest 和 AgentAnimationRequest 这三个参数本例并没有实际用到,返回应相关操作的状态对象(相当于 readystatus 属性),在调用网络 acf 文件时有比较实际的用途,这个会在后面说明!</P>
页: [1]
查看完整版本: MSAgent 详细解说(三)