我们的背景声音有问题。如果在我们更改视图然后返回菜单时声音打开,则会添加另一个声音循环。如果我们回去时声音静音,它会重新开始。请帮忙。这是我的代码。
// Meny.m
#import "Meny.h"
#import <AVFoundation/AVFoundation.h>
@interface Meny () {
AVAudioPlayer *audioPlayerBG;
}
@end
@implementation Meny
- (void)viewDidLoad {
[super viewDidLoad];
NSString *music = [[NSBundle mainBundle]pathForResource:@"TestSwoong" ofType:@"wav"];
audioPlayerBG = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:music] error:NULL];
audioPlayerBG.numberOfLoops = -1;
audioPlayerBG.volume = 0.5;
[audioPlayerBG play];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
// LjudKnapp stop
- (IBAction)stopBG:(id)sender {
[playBG setHidden:NO];
[pauseBG setHidden:YES];
[audioPlayerBG stop];
}
// LjudKnapp play
- (IBAction)playBG:(id)sender {
[pauseBG setHidden:NO];
[playBG setHidden:YES];
[audioPlayerBG play];
}
答案 0 :(得分:0)
看起来您需要了解哪些类和实例。如果您要进行面向对象编程,那么理解类和实例是很重要的,这就是您在使用Objective-C时所做的事情。
我们更改视图,然后返回菜单,它会添加另一个声音循环
该短语表明,当您“返回”时,您实际上不会返回现有的 Meny实例 - 相反,您正在创建另一个 Meny实例。现在,你看,你有两个!好吧,每个Meny实例都有自己的AVAudioPlayer,它会在创建Meny实例时开始播放 - 所以现在你有两个音频播放器,这就是为什么你会听到两个同时播放的循环。