Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование элементов анимации и мультипликацииСодержание книги
Поиск на нашем сайте
Движение объектов Наиболее простым способом создания анимации и мультипликации в Delphi является задание движущегося и изменяющегося рисунка. В простейшем случае рисунок может либо двигаться, либо изменяться. В первой части пособия уже были разобраны примеры с перемещением объектов при использовании компонента TTimer. В данном параграфе рассмотрим движение более подробно. Чтобы задать движение необходимо объекты всегда привязывать к форме. На форме начало координат – точка (0,0) совпадает с левым верхним углом формы. Положение каждого объекта задается горизонтальной (по оси Ox) и вертикальной (по оси Oy) координатами. Рис. 7. Форма с координатной сеткой
Рис. 8. Координаты автомобиля
Двигаясь горизонтально, объект меняет координату по оси Ox: x = x + a. Параметр а может принимать произвольные значения: постоянные или случайные числа (задаваемые датчиком случайных чисел). При а>0 объект перемещается вправо, при а<0 – влево. По оси Oy в данном случае координата не меняется.
Рис. 9. Движение автомобиля по оси Ox при а = 15 (x = x + 15).
Координате по оси Ox соответствует свойство Left, которое указывает положение объекта относительно левого края формы. Например, задать движение автомобиля (Image1), изображенного на рис. 9 вправо можно с помощью следующей конструкции: Image1.left:=Image1.left + 15;
Создадим графический интерфейс проекта, подобно тому, как изображено на рис. 10.
Рис. 10 Графический интерфейс окна
Для вывода изображений дороги и автомобиля используем соответственно компоненты Image1 и Image2. Необходимые картинки создадим в графическом редакторе Paint и загрузим при проектировании формы в компоненты Image1 и Image2. Также поместим в любое место на форме компонент TTimer с интервалом 100. Таймер необходим в программе для организации повторения действий. Перемещение автомобиля вправо задается изменением его свойства Left: Image2.left:=Image2.left+5. Если автомобиль достигнет правой границы окна, то его можно вернуть на исходную позицию. То есть, если положение автомобиля относительно левой границы (свойство Left) будет больше ширины окна (свойство Width), он возвращается в исходную точку с помощью оператора: If Image2.Left>Image1.Width then Image2.Left: = 0. В обработчик события OnTimer компонента Timer1 введем следующий текст программного кода:
Вообще движение в Delphi можно задать двумя способами: - 1 способ заключается в движении объекта по форме, как в разобранном примере. В этом случае окружающая обстановка остается неподвижной. - 2 способ состоит в том, что сам объект стоит на месте, а окружающий его фон перемещается. Аналогично горизонтальному движению задается перемещение по вертикали, при котором изменяется координата по оси Oy: y = y + b. При b>0 объект движется вниз, при b<0 – вверх. Координата по оси Oy соответствует свойству Top, которое показывает положение относительно верхней границы окна. Например, оператор Image1.Top:=Image1.Top – 5 перемещает объект Image1 на 5 позиций вверх.
Поместим на форму компоненты TImage и TTimer с интервалом 100, сохраним проект. Файл с изображением мяча boll.bmp переместим в папку с проектом.
Рис. 11 Графический интерфейс окна.
Рисунок по условию задачи необходимо загрузить в компонент Image1 в процессе выполнения программы, для этого используем метод Image1.Picture.LoadFromFile ('boll.bmp'). При движении вверх свойство Top у мяча будет уменьшаться: Image1.Top:=Image1.Top – 10. Возвратить мячик в исходную позицию после достижения им верхнего края окна можно с помощью условного оператора: if Image1.Top<=0 then Image1.Top:= Form1.Height - Image1.Height. Текст обработчика события OnTimer, в котором описывается движение мячика, будет следующим:
При перемещении объектов по произвольным траекториям у них изменяются одновременно координаты х и y. Движение объектов описывается системой двух уравнений: x = x +a y = y + b. Соответственно одновременно будут изменяться и положения относительно левого и нижнего края окна, то есть свойства Left и Top.
Разработаем графический интерфейс проекта, подобно тому, как изображено на рис. 12. В компонент Image1 загрузим изображение мячика, в компонент Image2 – изображение рабочей области. В произвольном месте на форме расположим компонент TTimer с интервалом 50 и кнопку TButton с заголовком Пуск.
Рис. 12 Графический интерфейс окна.
Для удобства введем дополнительные переменные: - x – горизонтальная координата мяча или его положение относительно левой границы; - y – вертикальная координата мяча или его положение относительно верхней границы; - а – величина приращения по оси Ox; - b – величина приращения по оси Oy. Значения этих переменных установим в обработчике события OnClick для кнопки Пуск (Button1). Также после нажатия кнопки выполняется запуск мяча, т.е. свойство Enabled у компонента Timer1 должно стать равным True:
Для реализации данного проекта необходимо рассмотреть 8 вариантов движения мяча. 1. Мяч отскакивает от нижней границы: а) при движении слева направо до удара координаты мяча описывались уравнениями: ,
после удара уравнения изменились: . Из уравнений видно, что у мяча вертикальная координата y изменила свое приращение с b на –b. Таким образом, если начальные значения a=5 и b=5, а также y>(Image2.Height-Image1.Heught), то после отскока переменная b станет равной -5. if (a=5) and (b=5) and (y>Image2.Height-image1.Height) then b:=-5. б) при движении справа налево до удара: , после удара: . Условие движения будет следующим: if (a=-5) and (b=5) and (y>Image2.Height-image1.Height) then b:=-5. 2. Мяч отскакивает от правой границы: а) при движении сверху вниз до удара: , после удара: .
Условие: if (a=5) and (b=5) and (x>Image2.Width-Image1.Width) then a:=-5. б) при движении снизу вверх до удара: , после удара: .
Условие: if (a=5) and (b=-5) and (x>Image2.Width-Image1.Width) then a:=-5. 3. Мяч отскакивает от верхней границы: а) при движении справа налево до удара: , после удара: . Условие: if (a=-5) and (b=-5) and y<Image2.Top then b:=5. б) при движении слева направо до удара: , после удара: . Условие: if (a=5) and (b=-5) and y<Image2.Top then b:=5. 4. Мяч отскакивает от левой границы: а) при движении сверху вниз до удара: , после удара: .
Условие: if (a=-5) and (b=5) and x<Image2.Left then a:=5. б) при движении снизу вверх до удара: , после удара: .
Условие: if (a=-5) and (b=-5) and x<Image2.Left then a:=5. Обработчик события OnTimer будет выглядеть следующим образом:
Задания
Рис. 13 Графический интерфейс проекта
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 401; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.221.252 (0.008 с.) |