1

トグルボタンが押されたときにオーディオファイル(.wav)を再生しようとしています(もう一度押すと一時停止します)。最初は動作していましたが、今は何かを台無しにして助けを求めているに違いありません。これが私がやっている方法です:

MediaElementXAMLで作成

<MediaElement x:Name="myMediaElement" HorizontalAlignment="Center" VerticalAlignment="Center" PosterSource="vuvuzela.png" IsLooping="True" Source="Assets/vuvuzela.wav" Grid.Row="1" AutoPlay="False"/>

それなら私のToggleButtonはこれです:

<ToggleButton x:Name="ToggleButton" Content="Activate" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2" FontSize="32" Style="{StaticResource ToggleButtonStyle1}" Checked="Tog_Checked" Unchecked="Tog_Unchecked"/>

そして、私のコードビハインドには、ToggleButtonのチェックされた/チェックされていないハンドラーがあります:

private void Tog_Checked(object sender, RoutedEventArgs e)
    {
        myMediaElement.Play();
    }

    private void Tog_Unchecked(object sender, RoutedEventArgs e)
    {
        myMediaElement.Pause();
    }

何がうまくいかないのか、それをどのようにチェックするのかについてのアイデアはありますか?ありがとう!


編集:もう少しデバッグしました。myMediaElement状態を超えていないように見えOpeningますか?

4

3 に答える 3

0

メディア要素がそのように視覚的であることは、あなたにとって重要ですか?

代わりにクリックイベントでこれを試してください:

var _Media = new Windows.UI.Xaml.Controls.MediaElement() { AutoPlay = false };
var _Location = Windows.ApplicationModel.Package.Current.InstalledLocation;
var _Folder = await _Location.GetFolderAsync("Assets");
var _File = await _Folder.GetFileAsync("Ding.wav");
var _Stream = await _File.OpenAsync(Windows.Storage.FileAccessMode.Read);
_Media.SetSource(_Stream, _File.ContentType);
_Media.Play();
于 2013-02-21T18:31:52.583 に答える
0

オーディオ ファイルの再生に必要なコードを示しました。(次のオーディオを再生するためのコードはボーナスです)

1.メディア要素、再生/一時停止/停止ボタンをXAMLファイルに追加します。

<MediaElement x:Name="media" Source="Assets/page1/para1.mp3"  
              Grid.Column="0" Grid.Row="0"  AutoPlay="True" />
<Button Click="StopMedia" Grid.Column="0" Grid.Row="1" Content="Stop" />
<Button Click="PauseMedia"  Grid.Column="1" Grid.Row="1" Content="Pause" />
<Button Click="PlayMedia" Grid.Column="2" Grid.Row="1" Content="Play" />

2.分離コード ファイルに次のコードを追加します。

    private void StopMedia(object sender, RoutedEventArgs e)
    {
        media.Stop();
    }
    private void PauseMedia(object sender, RoutedEventArgs e)
    {
        media.Pause();
    }
    private  void PlayMedia(object sender, RoutedEventArgs e)
    {
        media.Source = new Uri(this.BaseUri, "Assets/page1/para1.mp3");
        media.Play();
    }

    protected override async void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
    {
        media.MediaEnded += media_MediaEnded;

    }

    private void media_MediaEnded(object sender, RoutedEventArgs e)
    {
        media.Source = new Uri(this.BaseUri, "Assets/page1/para2.mp3");
        media.Play();
    }
于 2013-04-03T18:10:16.753 に答える