不错的助手默林
<Object ID="AgentControl" Width=0 Height=0 ClassID="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F" CodeBase="#VERSION=2,0,0,0"> </Object> <Object ID="L&HTruVoice" Width=0 Height=0 ClassID="CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575" CodeBase="#VERSION=6,0,0,0"> </Object> <Script Language="JavaScript"> <!--// // * Character Objects var Merlin; // * Variables var UsedChars; var MerlinID; var MerlinACS; var MerlinURL; var MerlinStates; var MerlinAnimations; var MerlinReq; var MerlinStatesReq; var MerlinAnimationsReq; var MerlinLoaded; var LoadReq; var HideReq; var MerlinLeftX, MerlinCenterX, MerlinRightX; var MerlinTopY, MerlinCenterY, MerlinBottomY; // * Initialize UsedChars = "Merlin"; // * Merlin MerlinID = "Merlin"; MerlinACS = "merlin.acs"; MerlinURL = "http://typhoon.huzhoucity.com/zh/merlin.acf"; MerlinStates = "Showing, Hiding, Speaking, Moving, Gesturing, Idling, Hearing, Listening"; MerlinAnimations = "GestureLeft, Surprised"; MerlinLoaded = false; Window_OnLoad(); function Window_OnLoad() { AgentControl.Connected = true; MerlinLoaded = LoadLocalAgent(MerlinID, MerlinACS); if (MerlinLoaded) { SetCharObj(); } CheckLoadStatus(); } function LoadLocalAgent(CharID, CharACS) { AgentControl.RaiseRequestErrors = false; LoadReq = AgentControl.Characters.Load(CharID, CharACS); AgentControl.RaiseRequestErrors = true; if (LoadReq.Status != 1) { return(true); } return(false); } function SetCharObj() { Merlin = AgentControl.Characters.Character(MerlinID); Merlin.LanguageID = 0x409; } function CheckLoadStatus() { if (!MerlinLoaded) { window.status = "Loading " + MerlinID + " Character. Please Wait..."; MerlinReq = AgentControl.Characters.Load(MerlinID, MerlinURL); return(false); } window.status = ""; AgentIntro(); return(true); } function LoadError() { var strMsg; window.status = ""; strMsg = "Error Loading Character: " + MerlinID + "\n"; strMsg = strMsg + "This Microsoft Agent Script requires the character(s):\n"; strMsg = strMsg + UsedChars; alert(strMsg); } function GetScreenPositions() { var ScreenWidth = window.screen.width; var ScreenHeight = window.screen.height; if ((ScreenWidth == 0) || (ScreenHeight == 0)) { ScreenWidth = 800; ScreenHeight = 600; } MerlinCenterX = (parseInt(ScreenWidth / 2) - parseInt(Merlin.Width / 2)); MerlinRightX = (ScreenWidth - Merlin.Width); MerlinCenterY = (parseInt(ScreenHeight / 2) - parseInt(Merlin.Height / 2)); MerlinBottomY = (ScreenHeight - Merlin.Height); } function InitAgentCommands() { Merlin.Commands.RemoveAll(); Merlin.Commands.Caption = "My Menu Name"; Merlin.Commands.Add("ACO", "Advanced Character Options", "Advanced Character Options"); } function AgentIntro() { GetScreenPositions(); InitAgentCommands(); Merlin.MoveTo(MerlinLeftX, MerlinTopY); Merlin.Show(); Merlin.Speak("Welcome to JavaScript Fairyland!"); Merlin.Think("What day for today?"); Merlin.Play("GestureLeft"); Merlin.Speak("Yes!Today is April Fools' Day !"); Merlin.Play("Surprised"); Merlin.Speak("Thanks Yours Visit!"); Merlin.Hide(); } //--> </Script> <Script Language="JavaScript" For="AgentControl" Event="RequestComplete(RequestObject)"> <!--// { switch (RequestObject) { case MerlinReq : if (RequestObject.Status == 0) { SetCharObj(); if (MerlinStates != "") { window.status = "Loading " + MerlinID + " States. Please Wait..."; MerlinStatesReq = AgentControl.Characters(MerlinID).Get("State", MerlinStates, true); } else if (MerlinAnimations != "") { window.status = "Loading " + MerlinID + " Animations. Please Wait..."; MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true); } else { MerlinLoaded = true; CheckLoadStatus(); } } else { LoadError(); } break; case MerlinStatesReq : if (RequestObject.Status == 0) { if (MerlinAnimations != "") { window.status = "Loading " + MerlinID + " Animations. Please Wait..."; MerlinAnimationsReq = AgentControl.Characters(MerlinID).Get("Animation", MerlinAnimations, true); } else { MerlinLoaded = true; CheckLoadStatus(); } } else { LoadError(); } break; case MerlinAnimationsReq : if (RequestObject.Status == 0) { MerlinLoaded = true; CheckLoadStatus(); } else { LoadError(); } break; case HideReq : AgentControl.Characters.Unload(MerlinID); break; } // end switch } //--> </Script> <Script Language="JavaScript" For="AgentControl" Event="Command(UserInput)"> <!--// var BadConfidence; BadConfidence = 10; if (UserInput.Confidence <= -40) { } else if ((UserInput.Alt1Name != "") && (Math.abs(Math.abs(UserInput.Alt1Confidence) - Math.abs(UserInput.Confidence)) < BadConfidence)) { } else if ((UserInput.Alt2Name != "") && (Math.abs(Math.abs(UserInput.Alt1Confidence) - Math.abs(UserInput.Confidence)) < BadConfidence)) { } else { switch(UserInput.Name) { case "ACO" : AgentControl.PropertySheet.Visible = true; break; } } //--> </Script> <Script Language="JavaScript" For="AgentControl" Event="Bookmark(BookmarkID)"> </Script> <Script Language="JavaScript" For="AgentControl" Event="Click(CharacterID, Button, Shift, X, Y)"> </Script> <Script Language="JavaScript" For="AgentControl" Event="DblClick(CharacterID, Button, Shift, X, Y)"> <!-- Merlin.StopAll(); if (!Merlin.HasOtherClients) { if (Merlin.Visible) { HideReq = Merlin.Hide(); } else { AgentControl.Characters.Character.Unload(MerlinID); } } //-> </Script>