让我的背景音乐播放器停止? Objective C

问题描述:

我有几个视图,其中一个是“选项”视图,在这个视图中会出现一个按钮,允许用户点击一个按钮来“停止”背景音乐,或者点击它来打开它回来。林相当肯定,我有如何做到这一点的一般想法,问题是,我的代码没有工作,我不知道为什么。让我的背景音乐播放器停止? Objective C

这是从执行文件中的代码为“选项”类:

- (IBAction)musicIO:(id)sender { 
    MenuViewController *myMusicPlayer = [[MenuViewController alloc] init]; 

    [myMusicPlayer backgroundMusicStart]; 

    } 

它调用我的菜单代码的方法(不同类)

这是我的菜单代码:

-(IBAction) backgroundMusicStart{ 

if(i != 1){ 
NSURL * URL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/backgroundMusic.wav", [[NSBundle mainBundle] resourcePath]]]; 
NSError *error; 
backgroundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:URL error:&error]; 
backgroundPlayer.numberOfLoops = -1; 

    [backgroundPlayer play]; 
    i = 1; 
    NSLog(@"In start music"); 
} 
else if (i == 1) { 
[backgroundPlayer stop]; 
    i = 0; 
    NSLog(@"In stop music"); 
    } 

} 

“i”是全局声明的变量。

它的代码问题: 它运行,NSLog输出,它得到两个if语句罚款,问题是当它在[backgroundPlayer停止]括号,它不停止音乐,我无法弄清楚为什么。

+0

根据你的使用情况是什么,你可能想使用暂停,而不是止损,确定要使用哪一个取决于您是否希望[播放恢复或重新启动](http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html)。 – hd1 2013-04-24 03:29:44

+0

我想让它停下来。 – 2013-04-24 03:31:52

+0

将nslog更改为NSLog(@“停止音乐%@”,backgroundPlayer);并查看后台播放器是否为 – 2013-04-24 03:34:04

您每次调用backgroundPlayer时都会初始化backgroundPlayer,并且仅在其中一种情况下。你应该做的是让backgroundPlayer实例变量和行为在它的共享实例...示例如下:

// static AVPlayer *backgroundPlayer; 
- (IBAction) backgroundMusicStart { 
if (backgroundPlayer == nil) { 
    backgroundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:URL error:&error]; 
    backgroundPlayer.numberOfLoops = -1; 
} 

if (i == 1) { [backgroundPlayer stop]; } 
else if (i == 0) { backgroundPlayer play]; } 
} 
+0

所以我试了一下,它什么都没做。仍然是同样的结果。当我点击按钮音乐继续播放:/ – 2013-04-24 04:01:55

+0

所以这不是正确的答案,任何人有不同的解决方案? – 2013-04-25 18:34:17