23372

Использование компонента Timer. Организация простейшей мультипликации

Лабораторная работа

Информатика, кибернетика и программирование

В данной работе приводятся примеры работы компонента Timer обеспечивающего доступ к системному таймеру компьютера и его использование совместно с компонентом Image для создания простейшей мультипликации. Компонент Timer. Прием сообщений от таймера компьютера в приложении Delphi обеспечивает специальный компонент Timer со страницы System Палитры Компонентов.

Русский

2013-08-04

68.5 KB

35 чел.

Лабораторная работа 7

Использование компонента Timer.

Организация простейшей мультипликации.

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

Компонент Timer.

Таймер – это системный генератор событий, представляющий собой специальную микросхему, установленную на материнской плате компьютера. Он периодически сообщает Windows о завершении заданного промежутка времени. Прием сообщений от таймера компьютера в приложении Delphi обеспечивает специальный компонент Timer со страницы System Палитры Компонентов.

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

  •  выбрать компонент Timer на вкладке System Палитры Компонентов и поместить его на форму проекта;

Примечание. Данный компонент является невизуальным, поэтому в процессе проектирования приложения он выглядит как иконка, размеры которой изменить нельзя, а её месторасположение на форме значения не имеет.

  •  в свойстве Interval в Инспекторе Объектов установить желаемый период следования событий в миллисекундах от 1 до 65.535;

 

Примечание. Если установить значение 1000 (оно стоит по умолчанию), то включится секундный таймер, а при значении 100 – таймер будет генерировать события через одну десятую секунды.

  •  компонент Timer имеет только одно событие: OnTimer (Срабатывание таймера). Если дважды щелкнуть мышью в поле значения справа от имени события OnTimer в Инспекторе Объектов, или на самом объекте Timer, помещенном на форму, Delphi сформирует заготовку процедуры обработки этого события. Вам остаётся только между слов begin и end вставить необходимые операторы, которые будут периодически выполняться с заданной частотой таймера.

Задание 1. Создание приложения «Цифровые часы».

В приложении «Цифровые часы» будет продемонстрировано, как создать обработчик события для компонента Timer.

Выполните следующие действия:

  •  откройте новый проект;
  •  форме дайте название «ЧАСЫ»;
  •  для того, чтобы вид часов не мог изменяться в ходе выполнения программы, изменим некоторые свойства самой формы:
  •  сделайте форму текущей, щелкнув по ней мышью;
  •  в Инспекторе Объектов найдите свойство BorderIcons и, щелкнув по нему мышью, раскройте список его вложенных свойств;
  •  установите для вложенных свойств biSystemMenu и biMinimize значения True (присутствуют), а остальным – False (отсутствуют), согласно таблице, приведённой ниже;

 

Вложенные свойства Borderlcons

Описание

Значение

biSystemMenu

Кнопки системного меню и закрытия окна

True

biMinimize

Кнопка свёртывания окна

True

biMaximize

Кнопка развертывания окна

False

bihelp

Кнопка вызова помощи

False

  •  для свойства BorderStyle экранной формы из раскрывающе-гося списка выберите значение bsSingle (Рамке окна запре-щено изменять свои размеры);

Примечание. Эффект изменения этих свойств можно увидеть только  после запуска приложения.

  •  поместите на форму компонент Label со страницы Standard Палитры Компонентов. Задайте значение 00:00:00 его свойству Caption. Цвет метки (свойство Color) и её размеры выберете по желанию;
  •  в свойстве Font для компонента Label выберете имя шрифта, его размер, цвет и стиль начертания, которые Вы предпочитаете для индикации времени;
  •  поместите на форму компонент Timer со страницы System Палитры Компонентов;
  •  свойству Interval объекта Timer1 в Инспекторе Объектов присвойте значение 1000, таким образом будет задан период отсчета, равный одной секунде;
  •  дважды щелкните мышью в поле значения события OnTimer (закладка Events Инспектора Объектов для таймера) или на самом объекте Timer1, тем самым задав команду Delphi сформировать заготовку процедуры программного кода для обработки этого события в файле программного модуля;
  •  между строками ключевых слов Begin   end вставьте следующий текст: Label1.Caption:=TimeToStr(Time);

Примечание. Функция TimeToStr преобразует значение текущего времени встроенных системных часов компьютера в строку и присваивает это значение свойству Caption объекта Label1. Таким образом, в ответ на каждое событие OnTimer на экране будет выводиться значение каждой секунды.

  •  нажмите F9. Delphi откомпилирует и запустит приложение на выполнение. Его примерный вид приведён на рис.7.1;

Рис. 7.1. Цифровые часы

  •  обратите внимание на присутствие и вид управляющих кнопок формы: некоторые кнопки стали неактивны. Проверьте, возможно ли изменить размер окна;
  •  налюбовавшись действием часов, покажите их преподавателю и сохраните приложение в отдельной папке.

Организация простейшей мультипликации:

Теперь покажем, как можно использовать компонент Timer для создания простейшей мультипликации.

Задание 2. Разработаем приложение «Демонстрация полёта спутника Земли».

Выполните следующие действия:

  •  откройте новый проект;
  •  переименуйте форму, дав ей название «Демонстрация полета спутника Земли»;
  •  с помощью компонента Image1 поместите на форму картинку с изображением планеты Земля на фоне звёздного неба. Картинку предварительно создайте в графическом редакторе Paint (файл формата .bmp) или возьмите готовую, если такая имеется;
  •  установите размеры компонента Image1 на форме максимально возможными (если требуется, увеличьте размеры самой формы);
  •  с помощью компонента Image2 поместите на форму изображение спутника. Изображение спутника можно создать с помощью утилиты ImageEditor, входящей в состав стандартной поставки Delphi (см. лабораторную работу 3). Напомним, что утилита вызывается через главное меню Delphi: Tools/ ImageEditor. Файл со спутником сохраните в формате *.ico (иконка);
  •  поместите на форму три компонента Button (Кнопка) и задайте их свойствам Caption значения: «Пуск», «Стоп», «Выход». У Вас должно получиться нечто, похожее на Рис. 7.2.

Рис. 7.2. Вид формы «Спутник Земли»

  •  установите на форме компонент Timer и задайте его свойству Interval значение 100 (срабатывание через 0.1 секунды);
  •  щелкнув дважды в поле события OnTimer, впишите программный код закона движения спутника. Ниже приведено описание движения по окружности относительно центра компонента Image1:

{--------------------------- Обработка события таймера -----------------------------}

procedure TForm1.Timer1Timer(Sender: TObject);

begin

 if PUSK then

   begin

{--------------------------- Расчет координат спутника ------------------------------}

     Image2.Left:=Image1.Left+Image1.Width div 2

                  +trunc(cos(Alfa*pi/180)*R);

     Image2.Top :=Image1.Top+Image1.Height div 2

                  -trunc(sin(Alfa*pi/180)*R);

     Alfa:=Alfa+1; // Изменение угла поворота на орбите

   end;

end;

  •  в разделе “Инициализация” задайте начальные значения переменным;

{================= Раздел инициализации ====================}

begin

 PUSK:=false;      // Нет движения спутника

 Alfa:=0;              // Начальный угол поворота на орбите

 R:=200;               // Радиус орбиты

end.

Примечание. Переменные, заданные в этом разделе должны быть описаны глобально: var Аlfa, R:integer; PUSK:boolean.

  •  обработайте событие при нажатии на кнопку «Выход», для чего активизируйте эту кнопку на форме, двойным щелчком откройте Редактор Кода и вставите строку Close;
  •  доработайте приложение самостоятельно таким образом, чтобы при нажатии на кнопку «Пуск» движение начиналось, а при нажатии на кнопку «Стоп» приостанавливалось;
  •  попробуйте усовершенствовать программу, чтобы иметь возможность менять направление движения спутника (по часовой стрелке / против часовой стрелки) и его скорость движения по орбите с помощью дополнительных кнопок управления, помещенных в приложение;
  •  сохраните проект в отдельной папке. Результаты работы покажите преподавателю.

Вопросы

  1.  Что из себя представляет компонент Timer и как им можно воспользоваться в разрабатываемом приложении?
  2.  Перечислите последовательность действий, которая должна быть проделана для того, чтобы компонент Timer начал функционировать в приложении.
  3.  Как изменить период следования событий?
  4.  Как задать последовательность действий, которая должна периодически повторяться через определенный промежуток времени?
  5.  Приведите примеры, в каких случаях, кроме тех которые приведены в данной лабораторной работе, можно воспользоваться компонентом Timer.

Резюме

Компонент Timer обеспечивает приём периодически повторяющихся сообщений от системного таймера компьютера. Таким образом, его можно использовать в приложении, когда требуется генерировать события через заданные промежутки времени, например: смена кадров изображения при создании простейшей мультипликации.  

Основные положения при работе с компонентом Timer:

  •  для свойства Interval  желаемый период следования событий задаётся в миллисекундах от 1 до 65.535;
  •  при значении 1000 включается секундный таймер;
  •  компонент Timer имеет только одно событие: OnTimer (Срабатывание таймера), в обработчик которого следует вписать нужную последова-тельность действий, которую необходимо периодически повторять.

6

Лабораторная работа 7


 

А также другие работы, которые могут Вас заинтересовать

55281. Изготовления мячика в технологии «Мокрое валяние». Простые формы 49.5 KB
  Цель: Изготовление мячиков для уроков английского языка Задачи: научить технике Мокрое валяние; выяснить основные качества шерсти области ее применение и использование; изучить историческое значение шерсти; развивать наблюдательность мышление память восприятие ощущения.
55283. Чорна металургія, її роль і значення в економіці України. Райони і центри чорної металургії. Проблеми й перспективи розвитку галузі 25.79 KB
  Чорна металургія є найбільшою галуззю і становить матеріальну базу всього комплексу важкої індустрії України. Вона впливає на розвиток усіх галузей господарства, є найголовнішим споживачем палива, електроенергії та води.
55284. Економічний район. Типи економічних районів. Сучасне економічне районування України 25.79 KB
  Ефективність регіональної політики залежить від чіткого визначення території регіону, його меж, природно-ресурсного та соціально-економічного стану. Регіон – це обєкт регіональної політики, – тому велике значення має економічне районування країни, тобто виокремлення на її території самостійних регіонів, які представляють економічні райони
55285. Сільське господарство України, його галузева структура. Сучасний стан та проблеми інтенсифікації сільськогосподарського виробництва 26.05 KB
  Сільське господарство складається з взаємопов’язаних комплексів – рослинництва та тваринництва. У рослинництві зосереджене виробництво зерна, буряку, соняшнику, льону-довгунця, картоплі, овочів, плодів, ягід, винограду тощо. У тваринництві переважають скотарство, свинарство, вівчарство, бджільництво, рибоводство, звіроводство. З 1991 року частка тваринницької продукції знизилася з 54 до 44%.
55287. Разработка стратегии интенсивного селективного роста компании ОАО «ТМК» в наиболее привлекательных сегментах для достижения кратного отраслевого лидерства 1.51 MB
  ОАО «ТМК» является одним из лидеров мирового трубного бизнеса и крупнейшим в России производителем и экспортером стальных труб. Компания объединяет производственные предприятия, расположенные в России, США, Румынии и Казахстане. ТМК производит весь спектр трубной продукции – откапилярных
55288. Метание мяча в цель 51.5 KB
  Задачи.1.Совершенствовать метание малого мяча в горизонтальную и вертикальную цель с места. 2. Развивать дозирование силы удара мяча об пол с таким условием, чтобы он отскочил на заданную высоту. 4.Воспитывать товарищеские взаимоотношения, чувства сопереживания.