我们的背景音有问题。如果在我们切换 View 然后打开菜单时声音打开,则会添加另一个声音循环。如果在我们返回时声音被静音,则它将重新开始。请帮忙。这是我的代码。
// 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实例时开始播放-所以现在您有两个音频播放器,这就是为什么您听到两个循环同时播放的原因。
关于ios - 叠加背景音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29519490/