Что использовать для воспроизведения звуковых эффектов в silverlight для wp7 - PullRequest
5 голосов
/ 02 июня 2011

Я знаю, что могу сослаться на XNA для класса SoundEffect, и это то, чем я занимался до сих пор, но мне было интересно, был ли способ лучше, чем то, что я делал.

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;

using (var stream = TitleContainer.OpenStream("test.mp3"))
{
          var effect = SoundEffect.FromStream(stream);
          FrameworkDispatcher.Update();
          effect.Play();
}

Для моего тестового приложения у меня есть 20 звуков каждые 1 секунду, которые я хочу воспроизвести после нажатия кнопки.Я играю с разными техниками, но если возможно, я бы хотел узнать, как профессионалы делают это, прежде чем я сделаю приложение, основанное на звуковых эффектах.Полезны такие мелочи, как загрузка звукового эффекта или загрузка его в тот момент, когда нажата кнопка.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

На вашем месте я бы использовал PhoneyTools SoundEffectPlayer

Этот класс используется для воспроизведения объектов SoundEffect с использованием интеграции XNA.Плеер должен прожить достаточно долго, чтобы воспроизводился звуковой эффект, поэтому обычно его область выходит за пределы метода.Например:

public partial class MediaPage : PhoneApplicationPage
{
  // ...

  SoundEffectPlayer _player = null;

  private void playButton_Click(object sender, RoutedEventArgs e)
  {
    var resource = Application.GetResourceStream(new Uri("alert.wav", UriKind.Relative));
    var effect = SoundEffect.FromStream(resource.Stream);
    _player = new SoundEffectPlayer(effect);
    _player.Play();

  }
}
2 голосов
/ 03 июня 2011

Думаю, хорошим примером будет официальный пример на AppHub . Это демонстрирует, как играть несколько звуков. Вы можете напрямую загрузить образец с здесь .

Этот пример демонстрирует, как использовать SoundEffect XNA Framework и Классы SoundEffectInstance для воспроизведения несколько звуков одновременно в Приложение Silverlight для Windows Телефон. Это также показывает простой способ настроить DispatchTimer для вызова FrameworkDispatcher.Update для того, чтобы смоделировать игровой цикл для XNA Внутренние рамки. Наконец, это показывает, как загрузить звуковой файл волны в поток, который может быть воспроизведен классы SoundEffect.

...