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

Автор работы: Пользователь скрыл имя, 07 Декабря 2012 в 18:50, доклад

Описание работы

Вы почти наверняка используется для размещения элементов управления на форме, однако, вы, вероятно, ожидая, что они будут оставаться на месте, как только вы поместите сюда. Это не обязательно должны быть случай, однако. Управление есть X и Y позиции, и вы можете изменять их в любое время выполнения. Мы можем использовать это, чтобы создать простую анимацию в окнах приложений - скажем, например, животное ходить

Файлы: 1 файл

Простая анимация в Visual Basic (Matt Герц) .doc

— 170.11 Кб (Скачать файл)

 

 (1)     Когда мышью вниз, рассчитать смещение между верхнем левом углу песчанки и курсор.

 (2)     При перетаскивании, переместить песчанки с курсором, за вычетом ранее рассчитанные смещения.

 (3)     При освобождении песчанки, выяснить, где она будет падать на (остановка роста) и что он будет делать, когда он попадает туда ("Новое государство"), кэш, что информация, затем переключитесь на "падающие" государства.

 (4)     После завершения падения (то есть, когда кэшированное точки упора), переходим на кэшированные "новые" государства, и возобновить игру.

 

 

 Я выделю код для случая, когда песчанка стоят слева.   (Перед правом код будет идентичен, за исключением контроля gerbil1 будет использоваться). Итак, начнем:

 

 Пункт 1 получает и кэш смещения использованием MouseEventArgs передается в обработчик, предполагая, что вы находитесь в состоянии, в котором вы можете взять песчанки (например, не тогда, когда песчанка падает, так как песчанки бы испугаться и укусить вас):

 

    Private Sub gerbil_MouseDown (ByVal отправителя As Object, _

 ByVal электронной Как System.Windows.Forms.MouseEventArgs) _

 Ручки gerbil0.MouseDown, gerbil1.MouseDown

        "Выясните, где смещение в песчанка является

        Если состояние = gerbilState.gerbilMovingLeftOutsideCage Или _

         состояние = gerbilState.gerbilMovingLeftInsideCage Тогда

            offx = еХ

            offy = EY

            состояние = gerbilState.gerbilFacingLeftBeingDragged

 »(И т.д.)

 

 Точка 2 просто перемещает песчанка вместе с курсором, модифицирующий его смещения:

 

    Private Sub gerbil_MouseMove (ByVal отправителя As Object, _

  ByVal электронной Как System.Windows.Forms.MouseEventArgs) _

  Ручки gerbil0.MouseMove, gerbil1.MouseMove

        'Move песчанки в текущую позицию курсора

        "Уважение к кэшированным смещение

        Если состояние = gerbilState.gerbilFacingLeftBeingDragged Тогда

            gerbil0.Left = gerbil0.Left + EX - offx

            gerbil0.Top = gerbil0.Top + гу - offy

 »(И т.д.)

 

 Очки 3 имеет наиболее сложную логику (если можно так назвать), как показано в этом отрывке, так как мы должны выяснить, где она упадет до, и что он будет делать, когда он попадает туда:

 

    Private Sub gerbil_MouseUp (ByVal отправителя As Object, _

     ByVal электронной Как System.Windows.Forms.MouseEventArgs) _

     Ручки gerbil0.MouseUp, gerbil1.MouseUp

        "Пользователь отпустил песчанки.   Выясните, где

        "Песчанка, и как далеко она упадет до.

        Если состояние = gerbilState.gerbilFacingLeftBeingDragged Тогда

            "Если мы выше днища резервуара, а затем снизится до

 'Днища резервуара, так что песчанки в конечном итоге ходьбе

 »На кедр чипов внутри  

            Если gerbil0.Left> Tank.Left И _

               gerbil0.Left + gerbil0.Width <Tank.Left + Tank.Width И _

              gerbil0.Top + gerbil0.Height <= TankLevel Тогда

                stopheight = TankLevel

                "Когда мы закончим падать, новое государство должно

                'Быть в клетке

                NewState = gerbilState.gerbilMovingLeftInsideCage

            Еще

 "Если мы над полкой, то падают на шельфе

                Если gerbil0.Top <shelfLevel Тогда

                    stopheight = shelfLevel

                    "Когда мы закончим падать, новое государство должно быть

                    »На шельфе за пределами клетки

                    NewState = gerbilState.gerbilMovingLeftOutsideCage

                Еще

  «Мы должны быть ниже полке, поэтому упасть форме ...

                    stopheight = Me. Высота gerbil0.Height + + 1

                    "Когда мы закончим падать, новое государство должно быть

                    "К сожалению, вы goofed".

                    NewState = gerbilState.gerbilFellOffTheTable

                End If

            End If

            состояние = gerbilState.gerbilFacingLeftFalling "Пуск падения ...

 

        »(И т.д.)

 

    End Sub

 

 А потом обратно в обработчик тика таймера, мы обрабатываем часть 4, gerbilFacingLeftFalling государства, а также (не показано) соответствующего государства, если он сталкивается право:

 

            Дело gerbilState.gerbilFacingLeftFalling

                "Сохранить падения пока не дойдем до остановки высоты

 

                Перемещение температура = gerbil0.Top + fallRate "песчанка вниз

                Если температура> stopheight Then 'Не попадитесь прошлом остановить высоте!

                    температура = stopheight

                End If

                gerbil0.Top = температура

                Если gerbil0.Top = stopheight Then 'Есть ли у нас упали достаточно?

                    состояние = NewState «Да, падение будет завершен;

  'Переключиться на кэшированные новое государство

                End If

 

 Наконец, мы можем контролировать "действия" (если можно облагородить его с такой термин) путем обработки быстро / медленно кликов кнопки отключения соответствующую кнопку, когда она на медленный или быстрый:

 

    Private Sub Slow_Click (ByVal отправителя Как System.Object, _

      ByVal электронной Как System.EventArgs) Ручки Slow.Click

        "Сделать песчанки идти медленнее и с большей вероятностью сидеть

        freezeRate = freezeRate + 5

        скорость = (100 - freezeRate) / 6

        Если freezeRate = 100 Затем

            Slow.Enabled = False

        End If

        Fast.Enabled = True

    End Sub

 

    Private Sub Fast_Click (ByVal отправителя Как System.Object, _

      ByVal электронной Как System.EventArgs) Ручки Fast.Click

        "Сделать песчанки идти быстрее и менее вероятно, сидеть на месте

        freezeRate = freezeRate - 5

        скорость = (100 - freezeRate) / 6

        Если freezeRate = 0 Then

            Fast.Enabled = False

        End If

        Slow.Enabled = True

    End Sub

 

 И наши песчанки игра завершена.   Хорошо, таким образом, может быть, это не Ворота Балдура или Halo, но это показывает, контроль у вас есть более объектов в формах.   Наслаждайтесь!

 

 И овцы и песчанки примеры приведены ниже в прикрепленном файле ZIP. В следующий раз, я буду продолжать игру тема в новых коротких серий, речь идет о создании объектов на лету, как мы ходим виртуальный дом в поисках ключей.   Поговорите с вами тогда!

 

 - Мэтт - *


Информация о работе Простая анимация в Visual Basic