2

ボタンを押すと短い音を鳴らす WP8 アプリを作成しようとしていますが、音を鳴らす方法がわかりません。これが私のコードの簡単な例です:

XAML

<Rectangle x:Name="Rect1" Grid.Row="0" Grid.Column="0" Tap="RectTapped" Fill="White" />

App.cs

private void RectTapped(object sender, System.Windows.Input.GestureEventArgs e)
{
    MediaElement sound = new MediaElement();
    sound.AutoPlay = false;
    sound.Source = new Uri("Assets\\Sounds\\bark-1.wav", UriKind.Relative);
    sound.Play();
}

Nokie 820 デバイスでテストすると、サウンドが再生されません。理由がわかりません。

私が間違っていることはありますか?.wav は私のリソースにあります。

このタスクには MediaElement を使用しないでください。Xna.Framework.Audio; で SoundEffect クラスを使用してみました。MSDNの例に従いますが、LoadがContentクラスの使用可能なメソッドではなかったため、Content.Loadを使用できなかったため、これも失敗します。

XAudio2 も調べましたが、C++ を知らないので、例を理解できません。

4

5 に答える 5

0

サウンドエフェクトを再生しているので、MediaElementの代わりにXNASoundEffectクラスを使用する必要があります。

ドキュメントはこの分野には良くありませんが、これがあなたのやり方です:

effect = SoundEffect.FromStream(stream);
FrameworkDispatcher.Update();
effect.Play();

したがって、アプリパッケージからサウンドエフェクトを再生するには:

var stream = Application.GetResourceStream(filepath);
effect = SoundEffect.FromStream(stream);
FrameworkDispatcher.Update();
effect.Play();

MediaElementに対する利点は、SoundEffectをビジュアルツリーに含める必要がないことです(また、バックグラウンドオーディオプレーヤーを台無しにすることもありません)。欠点は、MediaElementで発生する(場合によっては有用な)イベントがないことです。

于 2013-03-19T16:48:01.847 に答える
0

の代わりに、Rectangleを使用しButtonます。また、MediaElementSilverlightアプリケーションで短いサウンドを再生するのにも適しています。コントロールがビジュアルツリーの一部であることを確認します(XAMLに追加します)。次に、ボタンClickイベントハンドラーにバインドします。

private void YourClickHandler(object sender, RoutedEventArgs e)
{
   myMediaElement.Source = new Uri("/Assets/Sounds/bark-1.wav", UriKind.Relative);
   myMediaElement.Play();
}
于 2013-03-18T01:39:16.083 に答える
0

線を取り除く

sound.AutoPlay=false;

または次のように変更します。

sound.AutoPlay = true; 

それはうまくいきます。

于 2015-08-03T06:02:43.133 に答える
0

Windows Phone 8.1 Silverlight の場合は、最初の 2 つの回答 (@DenDenDelimarsky と @onmyway133 から) を使用してサウンドを再生します。

MediaElement私の場合、XAMLサウンドを追加しないと再生されません。

以下のコードを使用してサウンドを再生します。

private void YourClickHandler(object sender, RoutedEventArgs e)
        {
            MediaElement myMediaElement = new MediaElement();
            myMediaElement.Source = new Uri("/MP3/AirHornTwoBlows.mp3", UriKind.Relative);
            LayoutRoot.Children.Add(myMediaElement);
            myMediaElement.Play();
        }
于 2015-07-21T10:30:28.797 に答える