2011-12-28 3 views
1

Я искал этот ответ и не нашел его.AVAudioPlayer - кнопка отключения звука

У меня есть музыка, которая воспроизводится в фоновом режиме при запуске приложения для iPhone. Но я хочу кнопку, чтобы пользователи могли отключить музыку. В приложении есть звуковые эффекты, поэтому сдвиг кнопки отключения звука на боковой панели устройства не приведет к ее сокращению.

Это текущий код, который у меня есть для AVAudioPlayer.

- (void)viewDidLoad{ 
#if TARGET_IPHONE_SIMULATOR 
    //here code for use when execute in simulator 
#else 
    //in real iphone 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"FUNKYMUSIC" ofType:@"mp3"]; 
    AVAudioPlayer *TheAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
    TheAudio.delegate = self; 
    [TheAudio play];  
    TheAudio.numberOfLoops = -1; 
#endif 
} 

Может ли кто-нибудь помочь мне с кодом, необходимым для простой кнопки, чтобы просто остановить музыку и начать ее снова.

Спасибо в продвижении.

ответ

0

Поместите этот код в файле viewcontroller.h:

-(IBAction) btnStop:(id)sender; 

Поместите этот код в файле viewcontroller.m:

-(IBAction) btnStop:(id)sender { 
    [TheAudio stop]; 
    //Whatever else you want to do when the audio is stopped 
} 

В строителе интерфейса, подключить кнопку к этому действию, поэтому при нажатии на это действие вызывается. Это должно заставить музыку остановиться.

+0

Как вы можете поместить код в кнопку? Я использую файлы nib btw. Спасибо за информацию, хотя. – user282076

+0

Отредактировано с лучшим кодом – DGund

+0

Благодарим за обновление кода, но «TheAudio» не объявлен и ошибки отсутствуют. – user282076

0

его легче показать код в ответ:

-(IBAction) playerPlay:(id)sender { 

    if([player isPlaying]) { 
     [player stop]; 
    } 
    if(![player isPlaying]) { 
     [player play]; 
    } 

} 

поясню: The [игрок] isPlaying метод проверяет, чтобы увидеть, если звук воспроизводится. Если звук воспроизводится, все в скобках выполняется (в этой ситуации звук перестает воспроизводиться).

Из-за "!" in! [player isPlaying], метод делается противоположным тому, что обычно. Это означает, что если игрок НЕ играет, все в скобках выполняется (в этой ситуации звук начинает воспроизводиться).

Все это заключено в IBAction, так что оно выполняется при нажатии кнопки.

Для дальнейшего использования, правильный формат для оператора If в Objective-C является:

if(thing to check for) { 
things that happen if the thing that is check for is correct; 
} 

Слово «то» фактически никогда не используется, но это то же самое, и все, что в скобках , Надеюсь, это поможет!

Смежные вопросы