设置mediaElement源的问题

编程入门 行业动态 更新时间:2024-10-28 06:31:27
本文介绍了设置mediaElement源的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

基本上我正在尝试创建一个简单的游戏,您将正在播放的歌曲与其所属的专辑封面相匹配。

我有一个类Song.vb只有属性

命名空间模型 公共类歌曲 公共财产标识As Integer Public Property Title As String Public Property Artist As String Public Property Album As String Public Property SongFile As StorageFile Public Property Selected As Boolean 公共属性用作布尔值 公共属性AlbumCover为BitmapImage 结束类 结束命名空间

它会加载,拍照并开始游戏,问题是当声音应该播放时它会发挥作用,但事实并非如此。

我有这个StartCooldown函数准备新游戏,并调用我的CountDown故事板

Private Sub StartCooldown()'启动我们的storyBoard for animation _playingMusic = False Dim brush As New SolidColorBrush(Colors.Blue) MyProgressBar.Foreground = brush InstructionTextBlock.Text = String.Format("准备好轮次{0} ...",_round + 1) InstructionTextBlock.Foreground =刷 CountDown.Begin() 结束子

和故事板Xaml

< Storyboard x:Name =" CountDown"完成= QUOT; CoolDown_Completed"> < DoubleAnimationUsingKeyFrames EnableDependentAnimation =" True" Storyboard.TargetName =" MyProgressBar" Storyboard.TargetProperty ="(RangeBase.Value)"> < DiscreteDoubleKeyFrame KeyTime =" 0"值= QUOT; 100" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:1"值= QUOT; 100" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:2"值= QUOT; 90" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:3"值= QUOT; 80 QUOT; /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:4"值= QUOT; 70" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:5"值= QUOT; 60" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:6"值= QUOT; 50" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:7"值= QUOT; 40" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:8"值= QUOT; 30英寸; /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:9"值= QUOT; 20" /> < DiscreteDoubleKeyFrame KeyTime =" 0:0:10"值= QUOT; 10" /> < / DoubleAnimationUsingKeyFrames>故事板执行后,< / Storyboard>

转到具有PickSong功能的CoolDown_Completed事件

rivate Async Sub CoolDown_Completed(sender As Object,e As Object) 如果不是_playingMusic那么 '开始播放音乐 Dim song = PickSong() MyMediaElement.SetSource(等待song.SongFile.OpenAsync(FileAccessMode.Read),song.SongFile.ContentType)'开始倒计时 StartCountDown() End if End Sub Private Function PickSong() Dim random As New Random Dim unusedSongs = Songs.Where(Function(p)p.Used = False) Dim randomNumber = random.Next(unusedSongs.Count) Dim randomSong = unusedSongs.ElementAt(randomNumber) randomSong.Selected = True 返回randomS ong 结束函数

当我调试它时,它会在行中抛出异常

MyMediaElement.SetSource(Await song.SongFile.OpenAsync(FileAccessMode.Read),song.SongFile.ContentType)

System.ArgumentNullException: '值不能为空。'

此部分代码的值:

等待song.SongFile.OpenAsync(FileAccessMode.Read)

是: " {System._ComObject}"

并从此部分:

song.SongFile.ContentType

是: " audio / mpeg"

我所有的歌曲文件都是mp3。

我的问题是,为什么我会得到空值异常,以及如何我可以播放我的歌吗?

解决方案

确保 MyMediaElement 不是Nothing。还要检查 song.SourceFile 的其他成员是否看起来不错。

使用一些显式存储文件尝试简化的 SetSource 。

Basicly i am trying to create a simple game where you match song that is playing to the album cover that it belongs to.

I have a class Song.vb that just has properties

Namespace Models Public Class Song Public Property Id As Integer Public Property Title As String Public Property Artist As String Public Property Album As String Public Property SongFile As StorageFile Public Property Selected As Boolean Public Property Used As Boolean Public Property AlbumCover As BitmapImage End Class End Namespace

it loads, pictures, and starts the game, problem is when it comes to the part when the sound is supposed to be playing, it doesn't.

I have this StartCooldown Function that prepares for the new game, and calls my CountDown Storyboard

Private Sub StartCooldown() 'starts our storyBoard for animation _playingMusic = False Dim brush As New SolidColorBrush(Colors.Blue) MyProgressBar.Foreground = brush InstructionTextBlock.Text = String.Format("Get ready for round {0} ...", _round + 1) InstructionTextBlock.Foreground = brush CountDown.Begin() End Sub

and the storyboard in Xaml

<Storyboard x:Name="CountDown" Completed="CoolDown_Completed"> <DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetName="MyProgressBar" Storyboard.TargetProperty="(RangeBase.Value)"> <DiscreteDoubleKeyFrame KeyTime="0" Value="100" /> <DiscreteDoubleKeyFrame KeyTime="0:0:1" Value="100" /> <DiscreteDoubleKeyFrame KeyTime="0:0:2" Value="90" /> <DiscreteDoubleKeyFrame KeyTime="0:0:3" Value="80" /> <DiscreteDoubleKeyFrame KeyTime="0:0:4" Value="70" /> <DiscreteDoubleKeyFrame KeyTime="0:0:5" Value="60" /> <DiscreteDoubleKeyFrame KeyTime="0:0:6" Value="50" /> <DiscreteDoubleKeyFrame KeyTime="0:0:7" Value="40" /> <DiscreteDoubleKeyFrame KeyTime="0:0:8" Value="30" /> <DiscreteDoubleKeyFrame KeyTime="0:0:9" Value="20" /> <DiscreteDoubleKeyFrame KeyTime="0:0:10" Value="10" /> </DoubleAnimationUsingKeyFrames> </Storyboard>

after the storyboard executes it goes to CoolDown_Completed event that has PickSong function

rivate Async Sub CoolDown_Completed(sender As Object, e As Object) If Not _playingMusic Then 'start playing music Dim song = PickSong() MyMediaElement.SetSource(Await song.SongFile.OpenAsync(FileAccessMode.Read), song.SongFile.ContentType) 'start countdown StartCountDown() End If End Sub Private Function PickSong() Dim random As New Random Dim unusedSongs = Songs.Where(Function(p) p.Used = False) Dim randomNumber = random.Next(unusedSongs.Count) Dim randomSong = unusedSongs.ElementAt(randomNumber) randomSong.Selected = True Return randomSong End Function

When i debugg it, it throws me an exception at line

MyMediaElement.SetSource(Await song.SongFile.OpenAsync(FileAccessMode.Read), song.SongFile.ContentType)

System.ArgumentNullException: 'Value cannot be null.'

The value of this part of code:

Await song.SongFile.OpenAsync(FileAccessMode.Read)

is: "{System._ComObject}"

and from this part:

song.SongFile.ContentType

is : "audio/mpeg"

All my song files are mp3.

My question is, why do i get the null value exception, and how can i get it to play my songs?

解决方案

Make sure that MyMediaElement is not Nothing. Also check if other members of song.SourceFile look good.

Try a simplified SetSource with some explicit storage file.

更多推荐

设置mediaElement源的问题

本文发布于:2023-07-11 11:53:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1093957.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:mediaElement

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!