【问题标题】:VB6: Double buffering/stop flickering on a movement animationVB6:运动动画上的双重缓冲/停止闪烁
【发布时间】:2016-05-25 22:35:59
【问题描述】:

目前我有 6 张图像相互叠加,每张图像都有自己对应的步行动画帧。每次行走时,Visible 属性都会发生变化,并允许看到下一个动画帧。

唯一的问题是当它通过任何类型的对象时血腥闪烁,无论是图片框、窗体、命令按钮等......

经过一天累人的研究,我无法想出解决此问题的解决方案。

如果有人想看我的代码的一点点:

    Select Case CharFrame
Case 1

    Avatar(0).Visible = True
    Avatar(1).Visible = False
    Avatar(2).Visible = False
    CharFrame = CharFrame + 1
Case 2
     Avatar(0).Visible = False
    Avatar(1).Visible = True
    Avatar(2).Visible = False
    CharFrame = CharFrame + 1

Case 3
    Avatar(0).Visible = False
    Avatar(1).Visible = False
    Avatar(2).Visible = True
    CharFrame = 1
End Select

Sleep (Timer)

Avatar(0).Top = Avatar(0).Top + moveY
Avatar(1).Top = Avatar(1).Top + moveY
Avatar(2).Top = Avatar(2).Top + moveY

Avatar(3).Top = Avatar(0).Top
Avatar(4).Top = Avatar(1).Top
Avatar(5).Top = Avatar(2).Top

Avatar(6).Top = Avatar(0).Top
Avatar(7).Top = Avatar(1).Top
Avatar(8).Top = Avatar(2).Top

Avatar(9).Top = Avatar(0).Top
Avatar(10).Top = Avatar(1).Top
Avatar(11).Top = Avatar(2).Top
Loop

 Avatar(0).Visible = True
 Avatar(1).Visible = False
 Avatar(2).Visible = False

【问题讨论】:

    标签: animation vb6 double buffer flicker


    【解决方案1】:

    在 Google 上找到了这个:

    Private Declare Function LockWindowUpdate Lib "USER32" (ByVal hwndLock As Long) As Long
    

    当您想停止窗口更新时:

    LockWindowUpdate <yourform>.hWnd
    

    如果你想继续

    LockWindowUpdate False
    

    找到了,没试过。

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 2012-08-27
      • 2015-05-01
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2013-07-20
      相关资源
      最近更新 更多