叠加背景声音



我们的背景声音有问题。如果当我们更改视图并返回菜单时声音打开,则会添加另一个声音循环。如果我们回去时声音被静音,它会再次启动。请帮忙。这是我的密码。

//  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实例时开始播放——所以现在你有两个音频播放器,这就是为什么你会听到两个循环同时播放。

最新更新