2009-11-18 3 views
3

Peu importe ce que j'essaie (build -> content, NSUrl, filename) je reçois une 'exception nulle': fichier introuvable lorsque j'essaie de lire un fichier son .caf en mode monotouch.Jouer un son avec Monotouch

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

J'essaie aussi des combinaisons en utilisant le nom du dossier « images/MatchGame.caf » et se déplaçant MatchGame.caf dans le dossier racine.

Qu'est-ce qui me manque? Merci beaucoup.

Voici un lien vers une vidéo d'ajout du son en mode monotouch. http://www.screencast.com/t/MmE0ZmFh Quel est le problème?

Répondre

8

Bryan,

De regarder votre screencast - vous essayez de lire un fichier mp3 et non un fichier café. Les fichiers MP3 sont encodés différemment et ne joueront pas avec la classe SystemSound qui existe (je ne me souviens pas si vous pouvez le faire en Obj-C ou non.)

Vous devez utiliser l'AVFoundation Namespace et la classe AVAudioPlayer .

using Monotouch.AVFoundation; 

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

Vous devrez peut-être modifier le code ci-dessus - Je n'ai pas MonoDevelop à la main, mais qui devrait vous aider un peu plus loin.

Cheers,

ChrisNTR

+0

Merci beaucoup! J'y suis arrivé. – Bryan

6

Vous devez la première ligne:

chemin var = NSBundle.MainBundle.PathForResource ("MatchGame", "café"); Ensuite, assurez-vous que votre fichier audio est inclus dans l'application en vous assurant que votre fichier CAF est marqué comme "Contenu" dans le volet Propriétés, sinon le fichier n'est pas copié dans le package d'application résultant (votre .app)

vous pouvez suivre les étapes décrites ici (ils sont pour les images, mais appliquent les mêmes fichiers audio):

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

de plus, cela est une bonne ressource pour laquelle vous devez stocker des fichiers:

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

+0

J'ai lu toute la documentation et tout essayé. Je ne peux pas l'entendre jouer un son. Pouvez-vous s'il vous plaît me donner l'exemple de code? – Bryan

+0

Pouvez-vous s'il vous plaît voir cette vidéo et dites-moi ce qui ne va pas? http://www.screencast.com/t/MmE0ZmFh – Bryan

+1

Vous obtenez une exception NullReferenceException, donc il y a peu de chances que vous ayez un fichier valide que vous pouvez utiliser avec SystemSound (il est limité à 30 secondes d'échantillons). Utilisez les API que nous vous recommandons réellement d'utiliser, pas SystemSound. –