覆盖背景声音

时间:2015-04-08 15:53:59

标签: ios xcode audio

我们的背景声音有问题。如果在我们更改视图然后返回菜单时声音打开,则会添加另一个声音循环。如果我们回去时声音静音,它会重新开始。请帮忙。这是我的代码。

//  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];
}

1 个答案:

答案 0 :(得分:0)

看起来您需要了解哪些类和实例。如果您要进行面向对象编程,那么理解类和实例是很重要的,这就是您在使用Objective-C时所做的事情。

  

我们更改视图,然后返回菜单,它会添加另一个声音循环

该短语表明,当您“返回”时,您实际上不会返回现有的 Meny实例 - 相反,您正在创建另一个 Meny实例。现在,你看,你有两个!好吧,每个Meny实例都有自己的AVAudioPlayer,它会在创建Meny实例时开始播放 - 所以现在你有两个音频播放器,这就是为什么你会听到两个同时播放的循环。