会说话的助手小人代码
要完成此效果把如下代码加入到<body>区域中
<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="java script">
<!--//
// * 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 java script 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="java script" 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="java script" 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="java script" For="AgentControl" Event="Bookmark(BookmarkID)">
</Script>
<Script Language="java script" For="AgentControl" Event="Click(CharacterID, Button, Shift, X, Y)">
</Script>
<Script Language="java script" 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> |