无论我尝试什么(build - > content,NSUrl,filename),我都会收到'null exception':当我尝试在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出了什么问题?
答案 0 :(得分: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,但这可以帮助您更进一步。
干杯,
ChrisNTR
答案 1 :(得分:6)
你需要第一行:
var path = NSBundle.MainBundle.PathForResource(“MatchGame”,“caf”);
然后确保您的音频文件包含在应用程序中,方法是确保您的CAF文件在“属性”窗格中标记为“内容”,否则文件不会复制到生成的应用程序包(您的.app)< / p>
您可以按照此处记录的步骤进行操作(它们适用于图像,但应用于音频文件):
http://wiki.monotouch.net/HowTo/Images/Add_an_Image_to_your_Project
此外,这是您应该存储文件的好资源: