Pergunta

Tenho um aplicativo que exibe filmes.A primeira tela mostra botões que apresentam diferentes visualizações modais.Dentro dessas visualizações modais estão botões que reproduzem vídeos.

Quero que o menu principal toque música (bastante fácil), mas quero que ele persista na segunda visualização modal, mas pare quando o vídeo começar a ser reproduzido.

Estou tentando [parar o audioPlayer] quando os botões dos filmes são pressionados, mas a música continua tocando.

Tentei parar e reproduzir o áudio em viewDidAppear e viewDidDisappear.Isso fez com que o áudio reiniciasse ao apresentar a segunda exibição e não fosse reproduzido durante o vídeo.

Espero que isso faça sentido, só preciso ter uma ideia de como fazer o áudio tocar o tempo todo (em duas ou três visualizações modais), exceto durante a reprodução do filme.

Este é meu método vewDidAppear:

-(void)viewDidAppear:(BOOL)animated {
   NSString *musicPath = [[NSBundle mainBundle] pathForResource: @"Intro Music" ofType:@"mp3"]; 
   if(musicPath) {
     NSURL *musicURL = [NSURL fileURLWithPath:musicPath];
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
     [musicURL release]; 
   }
   if(!audioPlayer.playing) {
     [audioPlayer play]
   }
}
Foi útil?

Solução

Seu controlador de visualização modal está tentando parar um audioPlayer que não existe dentro dele. O mainMenueViewController tem o audioPlayer, então ele deve ser o único a dizer ao reprodutor de áudio para parar.

Você pode usar NSNotifications para isso. Cada NSNotification é enviado por meio do singleton NSNotificationCenter . Aqui estão as etapas básicas para sua situação:

  1. Seu menu principal se registra para notificações quando está pronto.
  2. Seu menu principal tem métodos para chamar quando as notificações são disparadas.
  3. Seu submenu dispara um método quando precisa desligar o áudio.
  4. Seu menu principal cancela o registro quando está pronto para ser fechado.

Espero que isso ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top