如何通过PowerPoint VBA代码创建平滑的VBA动画-屏幕刷新?

时间:2019-05-30 19:42:03

标签: powerpoint-vba

我正在PowerPoint中创建一个益智游戏,但是在涉及VBA宏时遇到了一个问题。我正在尝试获取形状轮廓以随机“闪烁”团队颜色(每次闪烁时发出声音),因此当玩家敲击蜂鸣器时,它会停止。该代码是成功的,但是在使用时视觉效果明显滞后-声音没有滞后。

我尝试了几种不同的方法,例如For / Next循环,Do While / Loop,这两种方法似乎都没有影响。就研究而言,我得出的最接近的结论可能是与幻灯片刷新有关,但是我无法弄清楚这是否成立。目前,我的延迟时间为.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动画仍然非常流畅,因此我知道这与硬件无关,这似乎与我对代码的使用完全相关。

0 个答案:

没有答案