1

Visual Studio 2012UltimateでWindows8アプリを開発していますが、MediaOpenedイベントとMediaEndedイベントが発生しないMediaElementに問題があります。

以下は私のコードです:

    public static async void PlaySound(string AudioFile, RoutedEventHandler PlayerEnded)
    {
        Uri audioUri = new Uri("ms-appx:///Assets/" + AudioFile);

        StorageFile audioStorage = await StorageFile.GetFileFromApplicationUriAsync(audioUri);

        if (audioStorage != null)
        {
            var stream = await audioStorage.OpenAsync(Windows.Storage.FileAccessMode.Read);

            MediaElement player = new MediaElement();

            player.AudioCategory = AudioCategory.GameEffects;

            player.AutoPlay = false;

            player.MediaEnded += PlayerEnded;

            player.MediaOpened += new RoutedEventHandler(delegate(Object sender, RoutedEventArgs e)
                {
                    player.Play();
                });

            player.SetSource(stream, audioStorage.ContentType);
        }
    }

基本的に、これにはボタンクリックサウンドファイルが渡され、再生が終了するとthis.Frame.Navigateメソッドが呼び出されて別のページに切り替わります。ただし、どのイベントも発生していないため、機能しません。

AutoPlay = trueに設定すると、正常に再生されますが、それでもイベントは発生しません。

誰かが何が悪いのかわかりますか?

ご協力いただきありがとうございます

4

1 に答える 1

3

MediaElementを起動するには、ビジュアルツリーに含める必要があると思います。http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/f5b9cdba-5521-467d-b838-8420afc68e7f/を参照してください

于 2012-11-29T11:20:31.200 に答える