Свойство MediaPlayer.HasAudio возвращает ноль - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь воспроизводить звук, только если он еще не воспроизводится.

Я использую этот метод в своем классе:

private MediaPlayer mediaPlayer;

public bool HasAudio(){
  return mediaPlayer.HasAudio; // this returns null and it says property is readonly
}

Sound game = new Sound();
if (game.HasAudio() == false)//play sound

Как получить истинное или ложное значение?

Редактировать: Структура класса звука , Экземпляр класса

1 Ответ

0 голосов
/ 14 декабря 2018

Я думаю, я понимаю, что здесь происходит.

Здесь вы создаете экземпляр Sound, а затем вызываете HasAudio.На данный момент он пытается получить доступ к полю m_mediaPlayer, но оно пустое, потому что вы создаете его только в методе Play.Как я и предлагал в своем комментарии к sidenote, вам нужно сначала создать экземпляр MediaPlayer либо в конструкторе, либо в объявлении поля.

internal class Sound
{
    public bool HasAudio { get { return mediaPlayer.HasAudio; } }

    private MediaPlayer mediaPlayer = new MediaPlayer();

    public void Play(string fileName)
    {
        mediaPlayer.Open(new Uri(@"sounds/" + fileName, UriKind.RelativeOrAbsoute));
        mediaPlayer.Play();
    }

    public void Stop()
    {
        mediaPlayer.Stop();
    }
}
...