#objective-c #cocoa-touch
#objective-c #cocoa-touch
Вопрос:
У меня есть IBAction, как только пользователь нажимает IBAction, воспроизводится звук. Пользователь может включать и выключать звук нажатием кнопки. Нажатие кнопки один раз включает звук, повторное нажатие выключает звук. Это отлично работает в одном контроллере представления. Однако это моя проблема. У меня есть 2 представления, и как только пользователь воспроизводит звук и хочет перейти к другому представлению, звук все еще воспроизводится один раз в другом представлении, но если они хотят остановить звук, им придется вернуться к представлению, которое содержит звук, но проблема в том, что создается новый аудиосеанс, что означает, что существующий звук нельзя отключить. Кто-нибудь знает, как это сделать
Вот код:
- (IBAction)twoSound:(id)sender; {
if (ButtonAlReadyClicked == 1)
{
ButtonAlReadyClicked = 2;
[sender setBackgroundImage:[UIImage imageNamed:@"z2.png"] forState:UIControlStateNormal];
}
else if (ButtonAlReadyClicked == 2)
{
ButtonAlReadyClicked = 1;
[sender setBackgroundImage:[UIImage imageNamed:@"z1.png"] forState:UIControlStateNormal];
}
if (twoAudio amp;amp; twoAudio.playing) {
[twoAudio stop];
[twoAudio release];
twoAudio = nil;
return;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
if (twoAudio) [twoAudio release];
NSError *error = nil;
twoAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:amp;error];
if (error)
NSLog(@"%@",[error localizedDescription]);
twoAudio.numberOfLoops = -1;
twoAudio.delegate = self;
[twoAudio play];
}
-(IBAction)goMain:(id)sender; {
[self dismissModalViewControllerAnimated:YES];
}
Ответ №1:
Я бы создал отдельный класс, который хранит и отслеживает ваш звук. Добавьте к этому классу синглтон и метод для переключения звука. Таким образом, только один экземпляр класса, управляющий музыкой, доступен для всего приложения.