四、改头换面
% R- F7 |; K% O" \) JMSAgent = Merlin ? 错!MSAgent 是指一系列动画人物的总称,最常见的 office 中的那些活宝,各位应该都熟悉吧?先来看看下面的这个例子:
( V8 i+ G1 j; M+ y
/ Y3 V7 F& j7 k4 g
' | }) {2 _0 e/ I8 x- s" x- b2 a5 F4 d1 T: |7 `7 t0 w& P7 k
8 Q$ B5 ^1 g5 y' }6 Pobject style="visibility:hidden" id="MSAgent" classid="CLSID

45FD31B-5C6E-11D1-9EC1-00C04FD7081F"/object
8 A5 j- K0 g; qscript language="JavaScript"
, O* U! ]1 [+ P2 L
//Coded by Windy_sk windy_sk@126.com 20040214
& t5 a) D; S0 E& @: h) b
/ q f- I0 }. Y7 ovar Agent = null;
4 O* Q: D+ F) W
var AgentID, AgentACS;
% t8 c2 k) R8 a% j$ z& K. }) g+ E/ v* Zvar AgentLoad = false;
1 O2 G& B ?% z; i& y
. F$ K i8 Q! G# k% `# }
function LoadAgent(NewAgent) {
1 y L% K3 W8 {6 @
if(AgentLoad) {
' M' {6 X% h5 y+ L
MSAgent.Characters.Unload(AgentID);
& U* M% r8 C& ] w' Y# D' n9 `) }
MSAgent.Connected = false;
" R; u! q9 ^9 P3 a d! K' p& O Agent = null;
( h4 l) r- D: m; A+ Y}
+ k/ D6 T* N7 tAgentID = NewAgent;
! u3 E7 k' e$ d7 Q. a( [2 f" mAgentACS = "http://agent.microsoft.com/agent2/chars/" NewAgent "/" NewAgent ".acf";
7 ?8 s4 b6 q. C! O
MSAgent.Connected = true;
! h- L- ^$ L1 t5 h, r* @- U2 W- I& fMSAgent.Characters.Load(AgentID, AgentACS);
5 s6 E; ?- U0 k! i) WAgentLoad = true;
E% m: C6 W) bAgent = MSAgent.Characters.Character(AgentID);
c1 q8 H3 N, s( |$ }# g
Agent.get("state", "Showing, Hiding");
* b! i5 J \3 S/ t+ ]# N
Agent.MoveTo(400, 300);
' s- x ]8 _+ h! FAgent.Show();
, `1 |/ n7 c: Lreturn;
0 I9 Q5 O" a% _4 I% A
}
- t$ l: k; |; f! l. o% Q( n/ s5 L5 e, ^/ H
LoadAgent("Merlin");
* o( i; Z0 w7 q/script
) R# @' k) i, i2 X% A, r
8 a9 p4 P5 |% ]6 S7 r# `
MSAgent Select :
$ e. ]. i% n: F7 h# m2 _9 \; KSELECT name="Agent_select" onchange="LoadAgent(this[this.selectedIndex].text)"
2 I8 d f, W1 U9 T- ^OPTIONMerlin/OPTION
7 J) ]4 Q" D( @/ C
OPTIONPeedy/OPTION
3 I$ o. D g7 h# lOPTIONGenie/OPTION
$ ?9 N- a+ |1 J0 B0 l: k
OPTIONRobby/OPTION
+ q: S) t) L4 Z3 z/SELECT
9 O, b* l( H% ^" t+ `) i, Q8 z
; D- j7 `, o( u, p8 W
6 }0 Z3 E5 @8 F" p9 {
% g7 P% {, H' g6 v3 t& i/ k+ j! w9 d6 ]$ \* K9 l: O
9 Z# q8 k7 [. Z/ k2 d: U( e7 H u; O4 v2 Z' K
! |$ A% m2 t; R" X0 X( V! p& ?
6 h' v8 h3 W$ i# \' e! v
5 t# p5 T- F6 L. A, E8 O/ L. G( s
8 w+ ~5 B7 D# r b1 {$ A
' J. l8 o9 n4 s8 g" f1 x }6 j9 g% ~3 Y; |. u& m
- L) e7 k0 [9 h* |% I
* u7 p1 Q5 \: ~
$ {$ t' v s: `
6 y) y v& j( ~1 Y4 r/ V. }8 e
8 t- g! Z! a7 K' p% u8 L: d# i- {+ ^( z6 [
$ }# z1 m( H/ F! w4 I
' z3 D9 \/ c0 l, ~" X& G+ S
8 u2 F& q# f9 ?- q5 q4 C- ^' t3 _1 v, n$ R- M
3 h- m* N3 S/ o5 ^: D. {& I( e, M# q. [; I R% N
; Q. l$ V, B% c7 E8 ^+ I0 u' y: y) g2 v
* \) z/ F5 R% c( i1 Q/ ]) z# Y2 P
/ r# M& v7 F' X; y, X, d
9 T" E: h3 c) ^& p8 h9 N" C' w
) i! @: K$ f+ X# P" T7 N
4 T @4 w+ F4 G* \/ M
1 f+ g# O6 P) l) O
* Q5 T4 Y0 {$ m, i * M: C* @3 F3 l6 V8 P, r
8 k J- b( \9 G5 x z& ^( T
6 N( @( G, Q+ n1 R$ {
- v9 `4 y, M1 c! w; T+ x 6 M. z2 r5 O$ g8 s4 E
% p+ y. H; B( H+ e( p' `3 V' A
看到没有? 原来 MSAgent 还有这么多可爱的造型呢!上面的例程中,我定义了一个读取角色的函数 LoadAgent ,通过这个函数更换角色,其中的大部分的功能在前面的章节中已经介绍了,这里仅仅说明一下,新的方法:
+ ]- f3 t2 x! p% m: _+ }' a
9 t' T! v; u5 E/ F6 j
MSAgent.Characters.Unload() 卸载角色,其中 AgentID ,必须是 MSAgent.Characters.Load() 中声明过的
4 Z. G- N: K# r7 j0 \% P8 W
3 f! n2 v* x- G+ {, e( M2 }
Agent.MoveTo() 这个方法上一节中介绍过,但是如果把它放在 Agent.Show() ,则相当于定义角色的出现位置
" ^9 i2 ~9 G' [4 g) _
7 w3 p6 [( H+ o: P$ z6 Y, y其实,MSAgent 绝对不仅仅是那么多,但是 MicroSoft 的官方网站上只提供了那么多……怎么办?可以从他的网站上连接角色,当然可可以从你的网站上呀!你可以在这里 www.microsoft.com/msagent/downloads/user.asp 下载官方角色以及语音引擎(可惜没有中文);当然,如果你有兴趣的话也可以开发一个属于自己的 Agent ,相关开发工具 www.microsoft.com/msagent/downloads/developer.asp ,网上也有很多高手做好的动画人物,推荐一个网站 www.msagentring.org/chars.htm 你也可以自己搜索一下。
, X4 G+ s9 {3 S J% p7 K
& U' B/ O$ h" |- X' T! }% P/ H7 e Q+ @
安装后角色文件存放在 %WINDOWS%\msagent\chars 目录下的 *.acs 文件,上传到服务器上,直接引用到那个路径就可以了!(你也可以在你的硬盘里搜索一下 *.acs 会有不小的收获呦)这里要说明一下,请自行更改程序中标明网络路径的相关语句,且注意扩展名是 .acs !
: C0 m; c5 h* b0 J$ W0 D/ R: C; m! t; ~6 Z; P& {
如果要让本机支持相应的 MSAgent ,也就是说不用网络调用,只要把 *.acs 文件 copy 到 %WINDOWS%\msagent\chars 目录就可以了,但如果是 *.exe 的安装文件,则会自动把角色文件放置到相应的路径下。