0

MediaElement クラスを使用して、ボタンのクリック時に単純なサウンドを再生しています。ダブルタップしない限り、それは私にとってはうまくいきます。2 回目のタップで、古いサウンドの再生を停止し、サウンドを再開します。しかし、Stop メソッドは機能しません。

    public static MediaElement SoundDelete;
    public static void PlaySoundCash()
    {
        if (SessionHelper.getConfig("SoundDelete") == "true")
        {
            System.Diagnostics.Debug.WriteLine(SoundDelete.Position.ToString());
            SoundDelete.Stop(); //dosn't work
            SoundDelete.Position = new System.TimeSpan(0,0,0,0,0); //dosn't work
            System.Diagnostics.Debug.WriteLine(SoundDelete.Position.ToString());
            SoundDelete.Play();
        }
    }

コンソールでは、タイムスパンが 0 になることはありません。最初からサウンドを再生するにはどうすればよいですか?

4

1 に答える 1

1

私はまったく同じ問題を抱えていました。MediaElement をビジュアル ツリーに追加すると、この追加機能を使用できるようになります。

MediaElements をベース Grid の子に追加すると、これらの問題が解決しました。

例えば:

C#

public static MediaElement SoundDelete;

private void MediaInit()
{
    // ...
    // load your sound file into SoundDelete
    // ...
    BaseGrid.Children.Add(SoundDelete);
}
public static void PlaySoundCash()
{
    System.Diagnostics.Debug.WriteLine(SoundDelete.Position.ToString());
    SoundDelete.Stop();
    SoundDelete.Position = new System.TimeSpan.Zero;
    System.Diagnostics.Debug.WriteLine(SoundDelete.Position.ToString());
    SoundDelete.Play();
}

または XAML で:

<Grid Name="BaseGrid">
    <MediaElement Name="SoundDelete" Source="path_to_your_sound_file.mp3" />
</Grid>
于 2012-12-17T04:51:06.033 に答える