Look at the highlighted sections of the scripting code below to see where a Request object is being used to synchronize changing pages with the Agent's speech, and where the pages are being changed (i.e., the RequestCompleted event handler).
The code to handle the last menu item illustrates that if you do not use a Request object, the page will change before the Agent has finished speaking.
Click the button to bring up Merlin and the menu for other pages: <P> <CENTER> <INPUT LANGUAGE="VBScript" TYPE=button VALUE="Click Me" NAME="navbtn"> </CENTER> <OBJECT ID="MenuCtl1" WIDTH=148 HEIGHT=40 CLASSID="CLSID:275E2FE0-7486-11D0-89D6-00A0C90C9B67"> <PARAM NAME="ForeColor" VALUE="2147483666"> <PARAM NAME="BackColor" VALUE="2147483663"> <PARAM NAME="Appearance" VALUE="1"> <PARAM NAME="SelForeColor" VALUE="2147483655"> <PARAM NAME="SelBackColor" VALUE="2147483652"> <PARAM NAME="FontName" VALUE="Verdana"> <PARAM NAME="FontSize" VALUE="8"> <PARAM NAME="FontBold" VALUE="0"> <PARAM NAME="FontItalic" VALUE="0"> <PARAM NAME="FontUnderline" VALUE="0"> <PARAM NAME="FontStrikethrough" VALUE="0"> <PARAM NAME="FontCharset" VALUE="0"> </OBJECT> <!-- including the agent control --> <OBJECT ID="Agentx" width=0 height=0 CLASSID="CLSID:F5BE8BD2-7DE6-11D0-91FE-00C04FD701A5" CODEBASE="#VERSION=1,5,1,0"> </OBJECT> <!-- automatic downloading and installation of text-to-speech (TTS) speech engine --> <OBJECT ID="TruVoice" width=0 height=0 CLASSID="CLSID:B8F2846E-CE36-11D0-AC83-00C04FD97575" CODEBASE="#VERSION=1,5,0,0"> </OBJECT> <SCRIPT LANGUAGE="VBScript"> <!-- Dim reqLoad Dim reqSpeak Dim newPage Dim Merlin 'array for menu items Dim arrMenu (4) arrMenu (1) = "About" arrMenu (2) = "Files" arrMenu (3) = "Stats" arrMenu (4) = "Link" 'array for speech Dim arrSpeech (4) arrSpeech (1) = "Going to the About page" arrSpeech (2) = "Lets visit the software dump!" arrSpeech (3) = "\Spd=50\\Emp\Stats freak huh?" arrSpeech (4) = "Here are Andys favourite links" 'array for HREF locations Dim arrHref (4) arrHref (1) = "about0707.asp" arrHref (2) = "files0707.asp" arrHref (3) = "sas0707.asp" arrHref (4) = "links0707.asp" 'setup popup menu Sub Window_OnLoad() MenuCtl1.appearance = 1 MenuCtl1.AddItem 0, arrMenu (1), 1 MenuCtl1.AddItem 0, arrMenu (2), 2 MenuCtl1.AddItem 0, arrMenu (3), 3 MenuCtl1.AddItem 0, arrMenu (4), 4 ' work-around for IE 4.0 PP Agentx.Connected = True On Error Resume Next Set reqLoad = Agentx.Characters.Load ("Merlin", _ "C:\program files\microsoft agent\characters\merlin.acs") Set Merlin = Agentx.Characters("Merlin") End Sub Sub Window_OnUnload If IsObject (Merlin) = True Then Merlin.Hide End If End Sub Sub Agentx_RequestComplete(ByVal Request) If Request = reqSpeak Then top.location.href = newPage End If End Sub Sub Agentx_Show (ByVal ID) If ID = "Merlin" Then Merlin.MoveTo 400,300 End If End Sub Sub Agentx_ActivateInput (ByVal ID) If ID = "Merlin" Then Merlin.MoveTo 400,300 End If End Sub 'active agent whenever an item is selected Sub MenuCtl1_Click(cmd) If (cmd <= 0) And (cmd => 5) Then MsgBox "Sorry, selected item out of range" Else Set reqSpeak = Merlin.Speak (arrSpeech (cmd)) newPage = arrHref (cmd) ' special case to demonstrate non-synchronized speaking If cmd = 4 Then top.location.href = newPage End If End If End Sub Sub navbtn_OnClick If IsObject (Merlin) = False Then MsgBox "There was a problem initializing Microsoft Agent. Did you download Merlin's character data file to C:\program files\microsoft agent\characters\merlin.acs? If you have not, please go to http://www.microsoft.com/workshop/imedia/agent/default.asp to download the file." Else Merlin.Show MenuCtl1.Popup End If End Sub --> </SCRIPT>
© 1999 Microsoft Corporation. All rights reserved. Terms of use.