Подписка

Проекты

Сборник идей для разработок в Delphi и использования их в Интернет. Участвуй в работе коллективного разума!

Google API в Delphi - проект с открытым исходным кодом.


А тут я коплю на лицензию Delphi 2011. Сумма пожертвования не фиксирована.

Друзья блога

Блоги и сообщества

DelphiFeeds.ru - Все Delphi-блоги Рунета О раскрутке блога по программированию Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Статьи по Delphi

Счётчики


Анализ веб сайтов

Рейтинг блогов




Система Orphus

  • 26Aug

    Сегодня рассмотрим ещё один момент работы с MS Agent Control – движение.

    Для того, чтобы переместить персонаж в определенную точку экрана, необходимо выполнить следующую функцию:

    AgentChar.MoveTo(x,y: integer; speed: integer)

    где AgentChar - ссылка на Вашего персонажа; x, yэкранные координаты, в которые необходимо переместить персонаж; speed: скорость с которой персонаж будет двигаться. ' '

    При вызове этого метода персонаж сам проиграет необходимую анимацию и переместиться в заданную точку. Здесь остается заметить только следующий момент: координаты x, y задают координаты верхнего левого угла окна персонажа. Не смотря на то, что персонаж вроде бы подвижный и не напоминает даже отдаленно прямоугольник – это все-таки прямоугольное окно – можете проверить этот факт на примере: просмотрите все зарегистрированные в системе окна и заметите там окно своего персонажа.

    Ну, а для того, чтобы переместить персонаж в координаты заданные в системе координат формы приложения, необходимо провести элементарный пересчёт:

    function Form2Screen(const Form: TForm; X, Y: integer):TPoint;
    begin
      Result.X:=X+Form.Left;
      Result.Y:=Y+Form.Top;
    end;

    Те, кто уже скачал программу-просмотрщик свойств персонажей, мог заметить, что в списке доступных анимаций практически у каждого персонажа есть следующие:

    • GestureUp
    • GestureDown
    • GestureLeft
    • GestureRight

    При выполнении этих анимаций персонаж укажет руками (ну или другими конечностями) соответственно вверх, вниз, влево и вправо. А что делать, если Вам необходимо, например, чтобы персонаж указал на какой-либо элемент на форме? Каждый раз заставлять Delphi считать координаты, потом определять положение персонажа и т.д. – слишком муторно и никому не нужно. Есть более простой вариант – воспользоваться методом GestureAt у персонажа. Например, вот такой код:

    AgentChar.GestureAt(120 ,300)

    Заставит персонаж указать в точку (120, 300). При этом персонаж сам определит какую из четырех анимаций проиграть. Единственный момент, который угнетает – персонаж не умеет указывать, например, вверх-влево или вниз-вправо.

    В заключение статьи, я выкладываю обновленный просмотрщик свойств персонажей, где вы сможете посмотреть как работают методы MoveTo и GestureAt у Ваших персонажей, а также, специально для мам и пап, которые читают мой блог – ссылку на игрушки для детей.

    В следующей раз будем рассматривать работу с контекстным меню персонажа.

    Файлы для скачивания

    Программа для просмотра действий персонажа MS Agent

    Мой блог находят по следующим фразам

    Related posts:

    1. Список анимаций для персонажа MS Agent.
    2. Изучаем MS Agent Control.
    3. MS Agent в Delphi.

    Автор Vlad в 7:24 am

    Метки: , , ,

1 Comment

WP_Cloudy
  • Merlin пишет:

    Столкнулся с такой проблемой, в Windows 7 персонаж появляется в розовом прямоугольнике. Стал искать решение. У Microsoft есть hotfix для исправления этого недоразумения: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=969168&kbln=ru
    Для скачивания исправления Microsoft требует email, на который высылает файл с паролем. Проверил – розовый фон исчез!

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].