0

我对 windows phone 抖动库有问题。我构建了一个应用程序,它的震动声音会消失,它的工作很好,但奇怪的错误让我感到困惑。我有两页。这是我的单独代码:

void Instance_ShakeGesture1(object sender, ShakeGestureEventArgs e)
    {            
        Stream stream = TitleContainer.OpenStream("Sounds/C.wav");
        effect = SoundEffect.FromStream(stream);
        effectInstance = effect.CreateInstance();
        if (effectInstance.State != SoundState.Playing || effectInstance == null)
        {
            FrameworkDispatcher.Update();
            effectInstance.Play();
        }

        else if (effectInstance.State == SoundState.Playing || effectInstance != null)
        {
            effectInstance.Stop();
        }
    }

    void Instance_ShakeGesture2(object sender, ShakeGestureEventArgs e)
    {
        Stream stream = TitleContainer.OpenStream("Sounds/D.wav");
        effect = SoundEffect.FromStream(stream);
        effectInstance = effect.CreateInstance();
        FrameworkDispatcher.Update();
        if (effectInstance.State == SoundState.Stopped || effectInstance == null)
        {
            effectInstance.Play();
        }

        else if (effectInstance.State == SoundState.Playing || effectInstance != null)
        {
            effectInstance.Stop();
        }
    }

Instance_ShakeGesture1 是我在第 1 页摇动时播放音乐的程序,在第 2 页摇动时播放音乐首先是 Instance_ShakeGesture1,然后是 Instance_ShakeGesture2。当我尝试先摇动第 2 页而不是第 1 页时,问题同样出现,Instance_ShakeGesture2 将首先执行,Instance_ShakeGesture2 将在第二个执行。当我使用断点时,我知道这个错误。有谁知道如何解决这个问题?谢谢之前:)

4

3 回答 3

1

当您导航到第二页时,可能事件 Instance_ShakeGesture1 仍然处于活动状态。尝试

Instance.ShakeEvent -= new EventHandler(Instance_ShakeGesture1);

在 Instance_ShakeGesture1 方法中。

于 2012-08-22T09:56:13.600 回答
1

试试这个,它对我有用,

protected override void OnBackKeyPress(CancelEventArgs e)
{
    e.Cancel = false;
    ShakeGesturesHelper.Instance.ShakeGesture -= new EventHandler<ShakeGestureEventArgs>(Instance_ShakeGesture1);
}

因为您应该在离开第一页时删除事件。因此,您可以在按下后退键按钮时清除 hakeGestureEventArgs。

于 2014-01-29T10:09:36.967 回答
0

好吧,我的坏。不知道您需要它多次工作。

试试这个,让我知道它是否有效:

在方法内部编写您添加的同一行代码OnNavigatedFrom并将其从当前method('Instance_ShakeGesture2')

于 2012-08-27T07:31:24.030 回答