3

无论我尝试什么(构建 -> 内容、NSUrl、文件名),我都会得到一个“空异常”:当我尝试在 monotouch 中播放 .caf 声音文件时找不到文件。

//var path = NSBundle.MainBundle.PathForResource("MatchGame", "caf"); 
//var gameSong = SystemSound.FromFile( new NSUrl(path, false));
var gameSong = SystemSound.FromFile("MatchGame.caf");
gameSong.PlaySystemSound();

我还尝试使用文件夹名称“images/MatchGame.caf”并将 MatchGame.caf 移动到根文件夹中。

我错过了什么?非常感谢。

这是一个在 monotouch 中添加声音的视频的链接。 http://www.screencast.com/t/MmE0ZmFh 怎么了?

4

2 回答 2

8

布莱恩,

通过查看您的截屏视频 - 您正在尝试播放 mp3 文件而不是 caf 文件。Mp3 文件的编码方式不同,不会与那里的 SystemSound 类一起播放(我不记得你是否可以在 Obj-C 中做到这一点。)

您需要使用 AVFoundation 命名空间和 AVAudioPlayer 类。

using Monotouch.AVFoundation;

var mediaFile = NSUrl.FromFilename("myMp3.mp3");
var audioPlayer = AVAudioPlayer.FromUrl(mediaFile);
audioPlayer.FinishedPlaying += delegate { audioPlayer.Dispose(); };
audioPlayer.Play();

您可能需要调整上面的代码 - 我手头没有 MonoDevelop,但这应该可以帮助您更进一步。

干杯,

克里斯NTR

于 2009-11-26T13:39:30.903 回答
6

你需要第一行:

var path = NSBundle.MainBundle.PathForResource("MatchGame", "caf");

然后确保您的音频文件包含在应用程序中,方法是确保您的 CAF 文件在“属性”窗格中标记为“内容”,否则该文件不会复制到生成的应用程序包(您的 .app)中

您可以按照此处记录的步骤进行操作(它们适用于图像,但同样适用于音频文件):

http://wiki.monotouch.net/HowTo/Images/Add_an_Image_to_your_Project

此外,这是存储文件的好资源:

http://wiki.monotouch.net/HowTo/Files/HowTo%3a_Store_Files

于 2009-11-20T22:40:46.607 回答