MediaPlayer.HasAudio 属性 returns 空
MediaPlayer.HasAudio property returns null
我正在尝试播放尚未播放的音频。
我在 class 中使用了这个方法:
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
如何获得真值或假值?
编辑:
Sound class structure,
Class instance
我想我明白这是怎么回事了。
在这里,您要实例化 Sound
,然后对其调用 HasAudio
。此时,它试图访问它的 m_mediaPlayer
字段,但它是空的,因为您只是在 Play
方法中实例化它。正如我在旁注评论中建议的那样,您需要首先在构造函数或字段声明中实例化 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();
}
}
我正在尝试播放尚未播放的音频。
我在 class 中使用了这个方法:
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
如何获得真值或假值?
编辑: Sound class structure, Class instance
我想我明白这是怎么回事了。
在这里,您要实例化 Sound
,然后对其调用 HasAudio
。此时,它试图访问它的 m_mediaPlayer
字段,但它是空的,因为您只是在 Play
方法中实例化它。正如我在旁注评论中建议的那样,您需要首先在构造函数或字段声明中实例化 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();
}
}