Прекратить воспроизведение звука, вызываемого через SoundEffect.FromStream - PullRequest
4 голосов
/ 11 августа 2011

У меня есть код Windows Phone 7, который начинает воспроизведение звука с помощью SoundEffect.FromStream. Я использую это вместо обычного медиа-объекта, так как мне нужно, чтобы на одной странице было несколько аудиоклипов.

Однако, основываясь на определенных внешних событиях, я хочу остановить воспроизведение определенного звука. Так как звуки, воспроизводимые в Open Stream, «играют и забывают», я не могу понять, как ссылаться на этот воспроизводимый звук и остановить его.

    public void PlaySoundCircus(object sender, RoutedEventArgs e)
    {
        if (audioPlaying == false)
        {
            using (var stream = TitleContainer.OpenStream("circus.wav"))
            {
                var effect = SoundEffect.FromStream(stream);
                FrameworkDispatcher.Update();
                effect.Play();
            }
            audioPlaying = true;
        }
    }

1 Ответ

11 голосов
/ 11 августа 2011

Вам необходимо создать SoundEffectInstance , в котором будет храниться ссылка на ваш SoundEffectSoundEffectInstance есть метод Stop, который можно вызвать.

SoundEffectInstance seiCircus;

using (var stream = TitleContainer.OpenStream("circus.wav"))
{
    var effect = SoundEffect.FromStream(stream);
    //create the instance
    seiCircus = effect.CreateInstance();

    FrameworkDispatcher.Update();
    //play sound via the instance
    seiCircus.Play();
}

//some event called to stop sound
seiCircus.Stop();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...