我正在将应用程序从WP7转换为WP8.1 WP7的代码不再适用于WP8.1
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();
WP8.1不再存在StreamResourceInfo。任何人都知道如何重新编写这一行以使其适用于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 :(得分:0)
在Windows Phone 8.1 Silverlight应用程序中使用XNA Framework播放声音
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)
答案 1 :(得分:0)
感谢。我通过在XAML中使用media元素然后在c#中添加代码来解决它。