Приложение:polet0.rar
images.rar
polet1.rar
Занятие 38. Анимация средствами Visual Basic. Элемент управления Timer
Метод ⇒ анимация, основанная на изменении свойств объекта.
В Интернете можно встретить рисунки с расширением .gif, которые выглядят как движущиеся рисунки – анимация. Эти файлы объединяют несколько рисунков, которые выводятся на экран по очереди. Специальные программы «gif - аниматоры» могут разделить файл на отдельные кадры и записать каждый кадр в отдельный файл
Чтобы картинка двигалась автоматически, можно использовать циклы, но намного удобнее воспользоваться таймером (элемент управления, создающий событие с интервалами, определенными пользователем).
Для начала рассмотрим все свойства таймера:
- Элемент управления таймер (timer) - это объект, способный инициировать события через регулярные промежутки времени.
- Таймер программируют присвоением определенных значений (в миллисекундах) свойству interval; тем самым задают периодичность возникновения событий, связанных с таймером.
Свойства и события таймера
Стандартные свойства таймеров Name и Enabled.
Самое важное свойство объектов этого типа Interval:
- Интервал (в мс) между двумя событиями может принимать любые значения в диапазоне от 0 до 65535.
- Интервал, равный нулю, отключает таймер.
Если вам нужно, чтобы события от таймера возникали n раз в секунду, то для подсчета значений свойства Interval можно пользоваться формулой 1000/n.
Например, чтобы система генерировала события таймера 2 раза в секунду, в свойство Interval надо записать число 500 (т.е. 1000/2).
Когда доступ к таймеру разрешен, событие Timer генерируется через равные промежутки времени.
- Name - имя таймера.
- Enabled - одно из самых важных свойств, оно есть практически у всех объектов. Это свойство блокирует объект, если его значение равно False (ложь), и разблокирует, если значение равно True. При помощи этого свойства мы будем включать и выключать таймер
- Interval ( интервал между событиями). Это свойство устанавливает интервал обновления таймера в миллисекундах, например, если поставить 1000, то таймер будет обновляться каждую секунду.
Разработка проект «Полет»
Вариант 1.
- В проекте Polet для размещения кадров анимированного изображения создадим массив изображений используя элемент управления ImageList1.
Для создания массива необходимо:
Записать изображения в ImageList1:
Каждому элементу массива присваивается соответствующий индекс.
Элементы в массиве пронумерованы по порядку. Порядковый номер элемента называется индексом и записывается в скобках сразу после имени массива (в нашем случае восемь анимационных кадров с индексами от 0 до 7).
Использование массивов объектов позволяет значительно сократить программный код.
2.Поместим на форму элемент Timer. Когда он находится на (загруженной) форме, то его совершенно не видно — он работает незаметно. Измените свойство Interval (=500).
3.Поместим на форму элемент управления PictureBox1. Каждые полсекунды значение свойства Image будет изменяться (PictureBox1.Image = ImageList1.Images(a), где а - переменная, содержащая текущее значение индекса)
Интерфейс проекта
Блок - схема проекта
Программный код проекта
Dim a As Short
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
a = 0
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox1.Image = ImageList1.Images(a)
a = a + 1
If a > 6 Then a = 0
End Sub
Вариант 2.
Дополним проект элементами PictureBox2, ImageList2, Timer2.
В программном коде проекта зададим смещение элементов PictureBox1, PictureBox2 вдоль формы.
Интерфейс проекта
Dim a As Short
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
a = 0
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox2.Image = ImageList1.Images(a)
PictureBox2.Left = PictureBox2.Left + 20
a = a + 1
If a > 6 Then a = 0
If PictureBox2.Left >= 400 Then PictureBox2.Left = 30
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
PictureBox1.Image = ImageList2.Images(a)
PictureBox1.Left = PictureBox1.Left - 20
a = a + 1
If a > 6 Then a = 0
If PictureBox1.Left <= 30 Then PictureBox1.Left = 400
End Sub
продолжение
|