Member 10876858 Ответов: 3

Как создать иллюзию вращающейся катушки, как у покерного автомата?


Привет Ребята,

Просто интересно, как бы лучше всего сделать так, чтобы катушка вращалась внутри vb.net-что? Я пытаюсь создать покерный автомат и хотел бы создать эффект, когда барабаны вращаются вокруг вас, когда вы нажимаете кнопку spin.

У меня есть настройка 5 кнопок на панели. с различными изображениями на них, я думаю, что, возможно, вы могли бы использовать таймер, чтобы заставить их двигаться вниз, и как только он доберется до заданного места, вернуться наверх, но это займет много энергии процессора и не будет плавным вращением.

Есть идеи, ребята?

Что я уже пробовал:

Это то, что я пробовал, но заставляет компьютер сильно отставать:

For i As Integer = 0 To Me.Button1.Height
            If Button3.Location.Y = 500 Then
                Button3.Location = New Point(0, -100)


            Else

                Me.Button3.Top += 100
            End If
            Application.DoEvents()

            If Button2.Location.Y = 500 Then
                Button2.Location = New Point(0, -100)


            Else

                Me.Button2.Top += 100
            End If
            Application.DoEvents()

            If Button1.Location.Y = 500 Then
                Button1.Location = New Point(0, -100)

            Else

                Me.Button1.Top += 100
            End If
            Application.DoEvents()

            If Button4.Location.Y = 500 Then
                My.Settings.Reel2 = My.Settings.Reel2 + 1
                Button4.Location = New Point(0, -100)
            Else
                Me.Button4.Top += 100
            End If
            Application.DoEvents()

            If Button5.Location.Y = 500 Then
                Button5.Location = New Point(0, -100)


            Else

                Me.Button5.Top += 100
            End If
            Application.DoEvents()

            If Button6.Location.Y = 500 Then
                Button6.Location = New Point(0, -100)


            Else

                Me.Button6.Top += 100
            End If

            Application.DoEvents()

            If Button7.Location.Y = 500 Then
                Button7.Location = New Point(0, -100)
            Else
                Me.Button7.Top += 100
            End If
            Application.DoEvents()

            If Button8.Location.Y = 500 Then
                Button8.Location = New Point(0, -100)
            Else
                Me.Button8.Top += 100
            End If
            Application.DoEvents()

            If Button9.Location.Y = 500 Then
                Button9.Location = New Point(0, -100)
            Else
                Me.Button9.Top += 100
            End If



            Dim d1 As Date = Date.Now
            While Date.Now.Subtract(d1).TotalMilliseconds < 7
                Application.DoEvents()
            End While
        Next

3 Ответов

Рейтинг:
0

Dave Kreskowiak

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

Те изображения в автомобильных журналах, где вы видите автомобиль, который выглядит так, как будто он действительно быстро движется по дороге, на самом деле автомобиль делает около 5 миль в час, а затвор камеры удерживается открытым примерно на пару секунд, в зависимости от освещения.


Рейтинг:
0

Gerry Schmitz

Фильмы работают со скоростью 24 кадра в секунду (кадров в секунду)

High end VR (виртуальная реальность) работает со скоростью 90 кадров в секунду; ниже этого уровня он может вызвать у вас тошноту.

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

Итак, подумайте о "таймере" с интервалом событий около 24 кадров в секунду; который не является интенсивным процессором. И форма будет реагировать на нажатия кнопок, чтобы остановить вращения.

.net - постоянно обновлять отображение текущего времени в форме Windows? - переполнение стека[^]


Рейтинг:
0

RickZeeland

Смотрите видеоурок здесь: Visual Basic 2015 - Einarmiger Bandit / Игровой Автомат [HowTo #044] - YouTube[^]
Другим вариантом может быть использование Передача битового блока функция копирования изображения с более крупного изображения, см. пример здесь: Копирование графики с помощью BitBlt (.NET Style)[^]