Простая анимация в Visual Basic

Рейтинг: 0Ответов: 1Опубликовано: 05.03.2015

Вот то, что сделал с учётом ваших рекомендаций.

В прошлой версии программы (в моей) у меня работало движение вниз и влево, а потом картинка трясётся!

В этой версии программы у меня есть лишь движение вниз, и то при тряске картинки.

Public Class Form1
    Dim topryk As Double, downryk As Double, mode As Double, karet As Double

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Timer1.Enabled = True
        Timer2.Enabled = False
        mode = 0
    End Sub
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick

        If mode = 0 Then
        ElseIf PictureBox1.Top < 100 Then
            PictureBox1.Top = PictureBox1.Top + 4 ''PictureBox1 вниз

        Else : mode = 1
        End If
        If mode = 1 Then
        ElseIf PictureBox1.Left > 930 Then
            PictureBox1.Left = PictureBox1.Left - 4      ''PictureBox1 влево
            PictureBox2.Left = PictureBox2.Left - 4        'PictureBox2 влево
        Else : mode = 2
        End If
        If mode = 2 Then
        ElseIf PictureBox1.Left < 960 Then
            PictureBox1.Left = PictureBox1.Left + 4 'PictureBox1 вправо      
            PictureBox2.Left = PictureBox2.Left + 4  'PictureBox2 вправо
        Else : mode = 3
        End If
        If mode = 3 Then
        ElseIf PictureBox1.Top > 100 Then
            PictureBox1.Top = PictureBox1.Top - 4 'PictureBox1 вверх
        Else : mode = 4

        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class

Ответы

▲ 1

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

If mode = 0 then 
  Mode =1
Else if mode =1 then
  If PictureBox1.Top < 100 Then
    PictureBox1.Top = PictureBox1.Top + 4
  else 
    mode =2
  end if 
else if mode =2 then

И так далее.