2010-06-25 9 views
0

Je rencontre un problème étrange avec la classe AVAudioPlayer. Chaque fois que j'essaie d'accéder à l'une de ses propriétés, elles sont nulles.AVAudioPlayer isPlaying retourne toujours une valeur nulle

// Get the file path to the song to play. 
NSString *filePath = [[[NSBundle mainBundle] pathForResource:pSound.fileName 
       ofType:pSound.fileType] retain]; 

// Convert the file path to a URL. 
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath]; 

NSError* err; 
//Initialize the AVAudioPlayer 
self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&err]; 

    if(err){ 
    NSLog(@"Initializing failed with reason: %@", [err localizedDescription]); 
} 
else{ 
    [self.audioPlayer setDelegate:self]; 
    [self.audioPlayer prepareToPlay]; 
    self.playCount = self.playCount + 1; 
     NSLog(@"%@", [self.audioPlayer isPlaying]); //this displays null; also if I call it at a later time 
}; 

[filePath release]; 
[fileURL release]; 

Une idée?

EDIT: Bizarrement quand j'économiser isPlaying à un bool et imprimer le bool je reçois une valeur ...

+0

Avez-vous réussi jamais à résoudre ce problème? J'ai le même problème et je n'arrive pas à le comprendre. – Neeku

Répondre

2
NSLog(@"%@", [self.audioPlayer isPlaying]); 

% @ - dire que vous voulez imprimer résultat de [toString yourObject] donc Si vous voulez vérifier la valeur de bool retournée par [self.audioPlayer isPlaying] - vous devez utiliser% d.

p.s. ne pas appeler foget [lecture du lecteur audio]; ;)

+0

Oh ok merci. Mais de toute façon si j'accède à la valeur dans un si elle renvoie toujours aussi null. J'ai une méthode playOrPause où je vérifie cela. Comme cela fonctionne lorsque j'attribue d'abord la valeur à une variable, puis que j'interroge la variable, cela n'a pas d'importance, je suppose. – Daniel

0

Vous pouvez utiliser le (audioPlay.playing) au lieu de [Audioplayer isPlaying]

if (audioPlayer.playing) { 
     [audioPlayer stop]; 
} else { 
     [audioPlayer play]; 
} 
Questions connexes