скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Использование Microsoft Agent


Автор: Матвеев Игорь

"Взять высушенное сердце жабы, залить отваром корней можжевельника, добавить пепел перьев черного петуха, двух скорпионов и зуб дракона и выпаривать после захода солнца до первого крика совы." (Старинный рецепт приготовления тонера для лазерного принтера)

Персонаж GENIE Персонаж MERLIN Персонаж ROBBY

 Всякий, кто хоть раз работал в MS Office, знаком с помощниками. По умолчанию это забавная скрепка, которая то и дело стучит по стеклу монитора, дает советы и спрашивает, например, нужно ли сохранить изменения документа при закрытии программы. MS Office использует свои собственные помощники, но существует возможность встраивать подобных помощников и в ваши приложения. Причем эти помощники могут не только давать советы в виде текста, но и читать их, т.е. синтезировать речь.

 Доступ ко всем этим возможностям дает Microsoft Agent (кстати, с его помощью можно не только синтезировать речь, но и распознавать речевые команды, однако в рамках данной статьи мы не затронем эту тему).

 Для дальнейших экспериментов вам прежде всего необходимо установить себе MS Agent-a, думаю, найти его можно на http://www.microsoft.com/workshop/prog/agent/agentdl.htm или на дисках VisualStudio (там есть еще три персонажа и редактор персонажей в придачу),- дистрибутив имеет размер ~350 kb. А также характер - это файл анимационного персонажа, который и будет виден на экране. Это файлы с расширением *.acs (офисовские не подходят). Характер можно взять из переводчика Magic Gooddy, с дисков VisualStudio или других.

 Итак, далее подразумевается, что у вас уже установлен MS Agent и есть по крайней мере один персонаж. Теперь вам нужно установить ActiveX компонент агента. В Delphi выберите пункт "Компоненты->Импорт компонента ActiveX" и найдите в списке что-то вроде "Microsoft Agent Control 2.0". После установки в палитре компонентов на вкладке ActiveX появится новый компонент,- через него мы и будем управлять помощником.

 Установите на форму компонент Agent1, Edit1, Memo1 и две кнопки Button1 и Button2. По нажатию на первую кнопку будет загружаться MS Agent и персонаж, а на вторую кнопку мы будем вешать различные команды для агента.

 В поле Edit1.Text введите путь к файлу характера, а в Memo1.Text - то, что должен будет говорить помощник (должно быть на английском языке, вообще-то можно и на русском, но я пока не знаю как).

 В обработчик нажатия первой кнопки впишите следующий код:

Agent1.Characters.Load('MyAgent', Edit1.Text);

 Далее обращаться к этому персонажу (а их может быть несколько) нужно так:

Agent1.Characters['MyAgent']. ...

 Самые распространенные команды персонажу перечислены ниже:

  •  Для того чтобы показать персонажа нужно вызвать метод Show() со значением Fast = True, чтобы он появился мгновенно или False - чтобы персонаж появился с анимацией. Закрыть персонажа можно с помощью метода Hide().
  •  Персонаж может с анимацией передвигаться в указанную вами позицию - метод MoveTo(), первые два параметра - координаты назначения, третий - скорость анимации (в районе 1000..1500 будет нормально).
  •  Персонаж может обратить внимание пользователя на определенную часть экрана - метод GestureAt(), параметры - координата экрана, на которую должен указать персонаж.
  •  Чтобы персонаж произнес какую-то фразу нужно вызвать метод Speak(), первый параметр - строка, которую персонаж показывает в всплывающем облаке и читает, если второй параметр равен пустой строке. Второй параметр может содержать путь к *.wav или *.lwv звуку, который должен произвести персонаж, при этом персонаж обычно шевелит губами в такт звуку.

 Сделаем, чтобы наш персонаж сначала появился в углу экрана, переехал в противоположный угол, затем поприветствовал нас, прочитал содержимое Memo и скрылся. Впишите в обработчик нажатия второй клавиши следующее:

{ Установка начальных координат }
 Agent1.Characters['MyAgent'].Left := 0;
 Agent1.Characters['MyAgent'].Top  := 0;
 { Появление персонажа с анимацией }
 Agent1.Characters['MyAgent'].Show(False);
 { Переезжаем в противоположный угол }
 Agent1.Characters['MyAgent'].MoveTo(Screen.WorkAreaWidth-Agent1.Characters['MyAgent'].Width,
   Screen.WorkAreaHeight-Agent1.Characters['MyAgent'].Height, 1500);
 { Приветствие }
 Agent1.Characters['MyAgent'].Play('Greet');
 { Читаем содержимое Memo1 }
 Agent1.Characters['MyAgent'].Speak(Memo1.Text, '');
 { Скрываем персонажа с анимацией }
 Agent1.Characters['MyAgent'].Hide(False);

 В результате многочисленных опытов не удалось выяснить только как читать текст по-русски. Однако, использование помощников даже с английской речью может поднять популярность ваших продуктов (особенно если они изначально ориентированны для иностранного потребителя). В результате множества испытаний не было найдено каких-то ошибок при использовании персонажей - MS Agent сам загружается когда он нужен и сам выгружается когда он уже не нужен. А небольшой размер дистрибутива MS Agent-а позволяет "таскать" его с собой и устанавливать при инсталляции своих проектов.


Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook