2009-08-24 8 views
0

Il semble que AVAudioPlayer n'est pas ressenti. Donc, dans ce qui suit serait SoundFX jeu à la fin, le délai 1 seconde, puis jouer à nouveau, plutôt que le délai de 1 seconde - et la lecture de chevauchement résultante je désire:AVAudioPlayer n'est pas rentrant correct?

// ... 

AVAudioPlayer* soundfx = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:nil]; 


(void) makeSomeNoise { 

    [soundfx play]; 
    sleep(1); 
    [soundfx play]; 


} 

Dois-je recourir alors à NSOperation - filetage - pour atteindre mon objectif de chevauchement de la lecture?

Remarque: J'utilise le format IMA4/ADPCM qui est apparemment le format correct pour la lecture de son en couches.

Cheers, Doug

Répondre

1

Ce n'est pas AVAudioPlayer n'est pas rentrante. C'est que AVAudioPlayer commence à jouer votre son après la fin du runloop, et non dans votre fonction makeSomeNoise. Si vous voulez jouer votre son avec un délai d'une seconde, vous pouvez le faire:

(void) makeSomeNoise { 
    [soundfx play]; 
    [soundfx performSelector:play withObject: nil afterDelay:1.0]; 
} 
Questions connexes