2015-08-20 65 views
0

我從WP7轉換一個應用程序來WP8.1的代碼WP7不再適用於WP8.1的Windows Phone 8.1加載聲音的問題與StreamResourceInfo

 sfxLeft = new MediaElement(); 
     sfxRight = new MediaElement(); 
 StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri(wav, UriKind.Relative)); 

     var sfx = SoundEffect.FromStream(streamInfo.Stream); 

     sfxLeft = sfx.CreateInstance(); 
     sfxRight = sfx.CreateInstance(); 

StreamResourceInfo不已經存在WP8.1了。任何人都知道我可以重新寫這一行,使其工作WP8.1?

更新後的代碼。

下面是新的代碼,但現在看來sfxLeft和sfxRight總是NULL。我認爲下面的代碼會設置sfxLeft和sfxRight,但它仍然是NULL。

 protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 

     test(); 

    } 

    async private Task test() 
    { 
     Uri wav = new Uri("ms-appx:///Assets/eye_poke.wav", UriKind.RelativeOrAbsolute); 

     StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(wav); 

     stream = await file.OpenStreamForReadAsync(); 

     sfxLeft = SoundEffect.FromStream(stream).CreateInstance(); 
     sfxRight = SoundEffect.FromStream(stream).CreateInstance(); 
    } 

回答

0

要在Windows Phone發揮使用XNA框架完善8.1 Silverlight應用程序

StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(wav); 
Stream stream = await file.OpenStreamForReadAsync(); 
SoundEffect Sound1 = SoundEffect.FromStream(stream); 
FrameworkDispatcher.Update(); 
Sound1.Play(); 

或者你可以使用的MediaElement兩個RT和Silverlight,但它們在不同的命名空間,

MediaElement mediaElement1 = new MediaElement(); 
mediaElement1.Source = wav 
mediaElement1.AutoPlay = false; 
rootGrid.Children.Add(mediaElement1) 
+0

它沒有工作。我使用WP 8.1(通用應用程序)Sytax似乎關閉 – amarankes

+0

什麼是錯誤? – ssakash

+0

你能夠成功建立項目嗎?據我所知SoundEffect是XNA框架的一部分,你不能在通用應用程序中使用XNA媒體庫(win phone 8.1) – ssakash

0

謝謝。我想通過使用XAML中的媒體元素,然後在c#中添加代碼來播放它。

+0

一次不能在同一頁面上使用兩個媒體元素。 –