//Объявляем глобальный объект myCommand интерфейса
static AgentObjects.IAgentCtlUserInput myCommand;
private void axAgent1_Command(object sender,
AxAgentObjects._AgentEvents_CommandEvent e)
{
//Связываем объект myCommand с голосом пользователя:
myCommand =
(AgentObjects.IAgentCtlUserInput)(e.userInput);
//После команды голосом "MoveToMouse"
//персонаж перемещается на место курсора мыши:
if (myCommand.Voice == "MoveToMouse")
{
myGenie.MoveTo(
Convert.ToInt16(Cursor.Position.X),
Convert.ToInt16(Cursor.Position.Y), 1000);
}
//После команды голосом "Merlin"
//прежний персонаж скрывается, а новый появляется:
if (myCommand.Voice == "Merlin")
{
//Скрыть прежний персонаж:
myGenie.Hide(0);
//От начала координат в верхнем левом углу Form1
//задаем координаты "x,y" места нового персонажа:
myMerlin.MoveTo(
Convert.ToInt16(this.Location.X + 400),
Convert.ToInt16(this.Location.Y - 130), 1000);
//Показать новый персонаж в заданном месте:
myMerlin.Show(0);
//Чтобы персонаж произносил речь через динамики,
//задаем ему следующие свойства:
myAgentController = new AgentObjects.Agent();
myAgentController.Connected = true;
myAgentController.Characters.Load(
"merlin", "merlin.acs");
myMerlin =
myAgentController.Characters.Character("merlin");
//Новый персонаж произносит речь:
mySpeech = "Я - Маг. Есть проблемы?";
myMerlin.Speak(mySpeech, myObject);
}
}
Поясним этот код. После нашей голосовой команды Hide текущий персонаж скрывается (без написания дополнительного кода в данном листинге). Но если мы хотим, чтобы после произнесения нами одного из заданных по умолчанию имен персонажей (Genie, Merlin, Peedy, Robby), этот озвученный новый персонаж не просто появился в верхнем левом углу экрана, а появился в заданном нами месте и после этого произнес речь, мы должны записать это в коде, что мы и сделали в этом листинге.