代码之家  ›  专栏  ›  技术社区  ›  Paul D'Ambra

处理Windows Mobile Click事件,以便在我的程序被阻止时它不会“排队”

  •  0
  • Paul D'Ambra  · 技术社区  · 14 年前

    我已经为winmo6.x编写了一个简单的应用程序来娱乐我的女儿。它保存一组动物图像到动物噪声对,并随机显示其中一个图像。当点击图像时,会播放动物噪音,两岁的孩子会分心:-),然后会显示下一个图像。

    然而,由于她倾向于猛击屏幕,实际的流程是图像显示,她点击了几次;播放一些动物的噪音,然后图像变成下一个随机的动物。

    Private thisCollectionOfThings As ObjectStore
    Private currentObject As RealWorldObject
    

    ObjectStore是一个围绕列表(RealWorldObject)的包装类,该列表有一个getNextObject方法,该方法返回一个随机RealWorldObject,检查particluar对最近没有返回。

    以我们的形式。。。

    Private Sub picBox_Click(ByVal sender As Object, ByVal e As EventArgs)
                RemoveHandler picBox.Click, AddressOf picBox_Click
                picBox.BackColor = Color.Gray
                If currentObject.getSoundLocation() <> "" Then
                    currentObject.playSound()
                    refreshScreen()
                End If
    End Sub
    
    Private Sub refreshScreen()
        picBox.Image = Nothing
        currentObject = thisCollectionOfThings.getNextObject()
        If Not currentObject Is Nothing Then addImage()
        AddHandler picBox.Click, AddressOf picBox_Click
    End Sub
    
    Private Sub addImage()
        picBox.Image = New Bitmap(currentObject.getImageLocation())
    End Sub
    

    您可以看到,我尝试删除事件处理程序以避免单击排队问题,但它不起作用。

    1 回复  |  直到 14 年前
        1
  •  1
  •   ctacke    14 年前

    我喜欢简单(吻):

    1. 使用一个类似“IsPlaying”的布尔值,并在播放声音之前将其设置为true,播放完成后将其设置为false。
    2. 如果该布尔值为真,则忽略单击处理程序中的屏幕点击。