我们的背景声音有问题。如果当我们更改视图并返回菜单时声音打开,则会添加另一个声音循环。如果我们回去时声音被静音,它会再次启动。请帮忙。这是我的密码。
// 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];
}
您似乎需要了解类和实例是什么。如果您要进行面向对象编程,那么理解类和实例是至关重要的,这也是您在使用Objective-C时所做的。
我们更改视图,然后返回菜单,它添加了另一个声音循环
这句话表明,当你"返回"时,你实际上并不是在返回已经存在的Meny实例,而是在创建另一个Meny实例。所以现在,你看,你有两个!每个Meny实例都有自己的AVAudioPlayer,它在创建Meny实例时开始播放——所以现在你有两个音频播放器,这就是为什么你会听到两个循环同时播放。