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



我有几个视图,其中一个是"选项"视图,在这个视图中将有一个按钮,允许用户单击按钮来"停止"背景音乐,或者单击它来打开它。我很确定我有如何做到这一点的大致想法,问题是,我的代码不工作,我不知道为什么。

这是"options"类实现文件中的代码:

  - (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 stop]括号,它不停止音乐,我不知道为什么。

每次调用此方法时,您都在初始化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]; }
}

最新更新