2012-10-06 90 views
1

我想重复发送到此方法的声音?如何重复系统声音

- (void) playSound:(CFURLRef)soundFileURLRef { 
    SystemSoundID soundID; 
    OSStatus errorCode = AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID); 
    if (errorCode != 0) { 

    }else{ 
     AudioServicesPlaySystemSound(soundID); 
    } 
} 

我已经看到如何使用numberOfRepeats做出这些答案。但我无法适应我的代码。

回答

0

尝试使用AVAudioPlayer

- (void) playSound:(CFURLRef)soundFileURLRef { 
    NSError* sndErr;   
    AVAudioPlayer *player = [[ AVAudioPlayer alloc ] initWithContentsOfURL:(NSURL *)soundFileURLRef error:(&sndErr) ]; 

    // at this point player has a retain count of 1. you should save it 
    // somewhere like a class member variable so you can stop the playing 
    // and release the object later. Under ARC, you must have a strong reference 
    // to the object so that it doesn't get released when this function goes out 
    // of scope. 

    if (sndErr != nil) { 
     player.numberOfLoops = -1; // infinite number of loops. call stop when you want to stop. 
     [player play]; 
    } 
}