Воспроизведение нескольких звуков с помощью нескольких кнопок - PullRequest
0 голосов
/ 19 января 2012

Как заставить несколько кнопок воспроизводить разные звуки по одному и иметь общую кнопку остановки, используя платформу Windows Phone XNA?Когда воспроизводится звук, он должен воспроизводиться зацикленным, пока один не нажмет кнопку остановки или не нажмет другую кнопку.

Как я использовал SoundEffect с CreateInstance, он зациклился и воспроизводился нормально, но когда вторая кнопкащелчок, второй звук начинает играть вместе с первым.Также нужна помощь в создании общей кнопки остановки.Заранее большое спасибо.

Я пробовал что-то вроде ниже для каждой кнопки.

private void button2_Click(object sender, RoutedEventArgs e)
{
    var stream = TitleContainer.OpenStream("Sounds/A3.wav");
    var effect = SoundEffect.FromStream(stream);
    SoundEffectInstance instance = effect.CreateInstance();
    instance.IsLooped = true;
    instance.Play();

Но поскольку созданный экземпляр находится не на уровне всей программы, у меня возникают проблемы при создании общей кнопки остановки.

Я новичок в программировании.Спасибо за ваше понимание.

1 Ответ

0 голосов
/ 20 января 2012

Вы можете добавить переменную-член в свой класс и некоторые вспомогательные методы:

public class YourClass
{
    private SoundEffectInstance currentSoundEffect = null;

    private void StopCurrentSoundEffect()
    {
        this.currentSoundEffect.Stop();
        this.currentSoundEffect = null;
    }

    private void PlaySoundEffect(string fileName)
    {
        this.StopCurrentSoundEffect();
        using (var stream = TitleContainer.OpenStream("Sounds/A3.wav"))
        {
            var soundEffect = SoundEffect.FromStream(stream);
            this.currentSoundEffect = soundEffect.CreateInstance();
            this.currentSoundEffect.IsLooped = true;
            this.currentSoundEffect.Play();
        }
    }
}

Теперь каждый из ваших обработчиков событий может просто вызвать this.PlaySoundEffect с нужным именем файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...