2012-01-04 35 views
2

我建立了一個遊戲WP7應用不能獲得MP3文件流中WP7應用

,我想使用此代碼

  StreamResourceInfo info; 

     Uri myuri = new Uri("/SoundEffects/Punch1.mp3", UriKind.Relative); 
     info = App.GetResourceStream (myuri); 
     punch1 = SoundEffect.FromStream(info.Stream) ; 

衝頭在這裏的代碼中定義播放文件:

public static SoundEffect punch1; 

問題是,它引發了第三行中的空引用異常,聲稱信息爲空 並且在調試模式下的確如此,我發現資源流信息爲空
我認爲這是因爲它可以' T上讀文件雖然URI是正確

enter image description here

+0

請問您可以粘貼代碼,指什麼信息punch1是需要看到你在哪裏申報這些please .. thx – MethodMan 2012-01-04 19:52:45

回答

0
下面的代碼

 Uri myuri = new Uri("/SoundEffects/Punch1.mp3", UriKind.Relative); 
    info = App.GetResourceStream (myuri); 
    punch1 = SoundEffect.FromStream(info.Stream) ; 

SoundEffect.FromStream()預計波形文件流不是MP3,如下所示:http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.fromstream.aspx 。 所以解決方案找到一個MP3> WAV轉換器或只是找到另一種方式來加載MP3到WP7

考慮到這個圖片這是正常的URI在正常情況下無法評估isfile的表達式。

2

由於您使用的XNA裝配反正你可以嘗試兩件事情

- Clean and rebuild the project 
- Try appending project name in URI "/PhoneApp1;component/SoundEffects/Punch.mp3" 
+0

當我追加項目名稱這將是一個絕對或相對uri? – 2012-01-04 20:51:01

+0

我認爲這將是相對的,因爲你仍然通過你的項目訪問它 – 2012-01-04 20:53:32

+0

我試過了,沒有工作,我也試過在另一臺電腦上也沒有工作 – 2012-01-05 04:42:04

1

,您可以使用TitleContainer.OpenStream改爲(使用相對URI)並將音頻文件的內部版本設置爲Content

+0

我試過上面的代碼這裏: 流stream = TitleContainer。的OpenStream(@ 「soundeffects \ ahhh1.mp3」);punch1 = SoundEffect.FromStream(stream); 流對象管理讀取文件,並在調試時有一個長度和偏移量看起來很有前途 但第二行上升一個InvalidOperationException – 2012-01-05 04:39:02

+1

該異常正在拋出,因爲'FromStream'需要一個波形文件,而不是MP3。 http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.fromstream.aspx如果您想使用'FromStream'方法,則必須將其轉換。但是你仍然可以使用'TitleContainer.OpenStream'方法來加載WAV。 – keyboardP 2012-01-05 04:42:28

+0

它真的工作,不能感謝你足夠 – 2012-01-05 05:04:11

0

我同意Haris Haqsan你的URI字符串是不好的。

Uri myuri = new Uri("/PhoneBoxing;component/SoundEffects/Punch1.mp3", UriKind.Relative); 

但是,您還應該考慮切換到使用內容文件,而不是將它們嵌入到資源中,因爲它可以幫助您的應用程序啓動時間。根據我們所談論的文件數量的不同,這可能會產生很大的差異。

設置你的生成操作的內容和你的代碼應該是這樣的:

FileStream stream = new FileStream("/SoundEffects/Punch1.mp3", FileMode.Open, FileAccess.Read); 
+0

uri工作正常問題是fromstream方法只接受wav文件 – 2012-01-06 03:04:10

0

我在我的機器上遇到同樣的問題,InvalidOperationException有點令人困惑。我所要做的只是將wav文件重新編碼爲規格listed on MSDN

我這樣做後,它的工作完美。