2011-09-16 8 views
6

Voglio rilevare se [SimpleAudioEngine sharedEngine] sta attualmente riproducendo qualsiasi effetto. Per musica di sottofondo v'è un metodo che fornisce le informazioni se la musica di sottofondo è in riproduzione:Rileva se un effetto audio è attualmente in riproduzione in SimpleAudioEngine

[[SimpleAudioEngine sharedEngine] isBackgroundMusicPlaying]; 

Fa qualcosa di simile esistono per gli effetti sonori? In caso contrario, in quale altro modo posso rilevare se sto già giocando un effetto?

risposta

3

SimpleAudioEngine Non ha un metodo come isBackgroundMusicPlaying per gli effetti, ma si può memorizzare un BOOL chiamato isPlaying e utilizzare CDSoundSource

CDSoundSource* currentSound = [[CDAudioManager sharedManager] audioSourceForChannel:kASC_Right]; 
[currentSound load:audioFile]; 
currentSound.delegate = self; 
currentSound.backgroundMusic = NO; 
isPlaying = YES; 
[currentSound play]; 

quindi implementare il callback:

- (void) cdAudioSourceDidFinishPlaying:(CDLongAudioSource *) audioSource { 
    isPlaying = NO; 
} 

non lo faccio sapere esattamente se questo è il modo corretto di inizializzare lo CDSoundSource poiché ho rubato spudoratamente il codice da this topic. Forse dovresti dare un'occhiata allo CDAudioManager Class Reference

Spero che questo ti aiuti a indirizzarti nella giusta direzione.

Problemi correlati