Как создать плавную анимацию VBA с помощью кода PowerPoint VBA - обновление экрана? - PullRequest
0 голосов
/ 30 мая 2019

Я создаю игру-головоломку в PowerPoint и сталкиваюсь с проблемой, когда дело касается макроса VBA. Я пытаюсь получить очертания формы, чтобы «мигать» цвет команды случайным образом (при этом каждый раз, когда он мигает, издавался звук), поэтому, когда игрок нажимает на зуммер, он останавливается. Код выполнен успешно, но при использовании визуальные эффекты значительно задерживаются - звук работает без задержек.

Я пробовал несколько разных подходов, таких как цикл For / Next, цикл Do While / Loop, похоже, в любом случае не было никакого эффекта. Самое близкое, что я получил с точки зрения исследований, это то, что это может быть связано с обновлением слайдов, но я не смог выяснить, правда это или нет. Сейчас моя задержка составляет 0,25 секунды, но если я увеличу ее до 1 секунды, она будет работать последовательно. К сожалению, это бесполезно в этом сценарии, потому что я пытаюсь создать элемент рандомизации, где игрок не знает точно, где остановится его цвет; другими словами, это должно быть быстро.

Вот основной код, а затем 2 ссылки:

Sub YellowTeamPuzzleFlash()
Dim RandomNumber As Integer
Do While ActivePresentation.Slides(1).Shapes("YellowTeamLight").Visible = True
RandomNumber = Int((56 * Rnd) + 1)
ActivePresentation.Slides(1).Shapes("PuzzleFlash" & RandomNumber).Line.ForeColor.RGB = RGB(255, 255, 0)
delayTime3
playPing
ActivePresentation.Slides(1).Shapes("PuzzleFlash" & RandomNumber).Line.ForeColor.RGB = RGB(0, 0, 0)
Loop
End Sub
Sub delayTime3()

Dim PauseTime, Start
PauseTime = 0.25 ' Set duration in seconds
Start = Timer ' Set start time.
Do While Timer < Start + PauseTime
DoEvents ' Yield to other processes.
Loop

End Sub
Function playPing()

    Call PlaySound("C:\KTResources\Ping.wav", 0&, &H1 Or &H20000)

End Function

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

...