Character Object Methods

The server also exposes methods for each character in a Characters collection. The following methods are supported:

Activate, GestureAt, Get, Hide, Interrupt, MoveTo, Play, Show, Speak, Stop, StopAll, Wait

To use a method, reference the character in the collection. In VBScript and Visual Basic, you do this by specifying the ID for a character:

    Sub FormLoad

    'Load the genie character into the Characters collection
    Agent1.Characters.Load "Genie", _
        "C:\Program Files\Microsoft Agent\Characters\Genie.acs"

    'Display the character
    Agent1.Characters("Genie").Show
    Agent1.Characters("Genie").Play "Greet"
    Agent1.Characters("Genie").Speak "Hello. "

    End Sub

To simplify the syntax of your code, you can define an object variable and set it to reference a character object in the Characters collection; then you can use your variable to reference methods or properties of the character. The following example demonstrates how you can do this using the Visual Basic Set statement:

    'Define a global object variable
    Dim Genie as Object

    Sub FormLoad

    'Load the genie character into the Characters collection
    Agent1.Characters.Load "Genie", _
        "C:\Program Files\Microsoft Agent\Characters\Genie.acs"

    'Create a reference to the character
    Set Genie = Agent1.Characters("Genie")

    'Display the character
    Genie.Show

    'Get the Restpose animation
    Genie.Get "animation", "RestPose"

    'Make the character say Hello
    Genie.Speak "Hello."

    End Sub

In Visual Basic 5.0, you can also create your reference by declaring your variable as a Character object:

    Dim Genie as IAgentCtlCharacter

    Sub FormLoad

    'Load the genie character into the Characters collection
    Agent1.Characters.Load "Genie", _
        "C:\Program Files\Microsoft Agent\Characters\Genie.acs"

    'Create a reference to the character
    Set Genie = Agent1.Characters("Genie")

    'Display the character
    Genie.Show

    End Sub

Declaring your object of type IAgentCtlCharacter enables early binding on the object, which results in better performance.

In VBScript, you cannot declare a reference as a particular type. However, you can simply declare the variable reference:

<!-

    Dim Genie
    
    SUB window_OnLoad
    
    \'Load the character
    AgentCtl.Characters.Load "Genie", _
     "http://agent.microsoft.com/characters/genie/genie.acf"

    'Create an object reference to the character in the collection
    set Genie= AgentCtl.Characters ("Genie")

    'Get the Showing state animation
    Genie.Get "state", "Showing"

    'Display the character
    Genie.Show

    End Sub

-->
    
</SCRIPT>

Some programming languages do not support collections. However, you can access a Character object's methods with the Character method:

    agent.Characters.Character("CharacterID").method

In addition, you can also create a reference to the Character object to make your script code easier to follow:

<SCRIPT LANGUAGE="JScript" FOR="window" EVENT="onLoad()">
<!--
    
    //Load the character's data
    AgentCtl.Characters.Load ("Genie", _
        "http://agent.microsoft.com/characters/genie/genie.acf");    

    //Create a reference to this object
    Genie = AgentCtl.Characters.Character("Genie");
    
    //Get the Showing state animation
    Genie.Get("state", "Showing");

    //Display the character
    Genie.Show();

-->
</SCRIPT>

--------------------------------------------------------