如何连续播放存储在NSArray中的音乐?

时间:2014-12-17 10:02:17

标签: ios objective-c uitableview nsarray avaudioplayer

在tableview页脚中我有一个播放音乐的播放按钮,因为音乐开始播放视图根据播放的音频自动滚动但如果用户点击特定的单元格,特定单元格中的内容正在播放并停止但我想要继续使用音乐从哪里使用到最后。下面是代码。请帮忙。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

int ref =(int) indexPath.row;


NSString *filePath = [soundArray objectAtIndex:ref];

NSString  *Path = [[NSBundle mainBundle] pathForResource:filePath ofType:@"mp3"];
NSURL *musicFile  = [NSURL fileURLWithPath:Path];
myAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];


if (playing == YES) {
    [playButton setBackgroundImage:[UIImage imageNamed:@"pause_White.png"] forState:UIControlStateNormal];

 [myAudioPlayer play];

         // playing = NO;

}


if (playing == NO) {
   // [playButton setBackgroundImage:[UIImage imageNamed:@"play_white.png"]       forState:UIControlStateNormal];

}
}

SoundArray包含修剪过的音乐。怎么继续这首歌?非常感谢。

1 个答案:

答案 0 :(得分:1)

根据我的概念,这是我的代码。您可能需要更多地管理它只是一个样本

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    isMainMusic = NO;

    // Construct URL to sound file
    NSString *path  = [NSString stringWithFormat:@"%@/1.mp3", [[NSBundle mainBundle] resourcePath]];
    mainMusicUrl    = [NSURL fileURLWithPath:path];
    NSString *path1 = [NSString stringWithFormat:@"%@/2.mp3", [[NSBundle mainBundle] resourcePath]];
    secondMusicUrl  = [NSURL fileURLWithPath:path1];
}

-(void)playSecondaryMusic
{
    if ([playMainMusic isPlaying]) {
        [playMainMusic pause];
    }

    if (playSecondaryMusic) {
        playSecondaryMusic.delegate = nil;
        playSecondaryMusic = nil;
    }

    isMainMusic = NO;
    playSecondaryMusic  = [[AVAudioPlayer alloc] initWithContentsOfURL:secondMusicUrl error:nil];
    playSecondaryMusic.delegate = self;
    [playSecondaryMusic play];
}

- (IBAction)playMainMusic:(UIButton *)sender {

    if (playMainMusic) {
        playMainMusic.delegate = nil;
        playMainMusic = nil;
    }

    isMainMusic = YES;

    playMainMusic       = [[AVAudioPlayer alloc] initWithContentsOfURL:mainMusicUrl error:nil];
    playMainMusic.delegate = self;
    [playMainMusic play];

}
//Delegate method
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{

    if (isMainMusic)
    {
        NSLog(@"Main music");
    }
    else
    {
        NSLog(@"Second music");
        [playMainMusic play];
        isMainMusic = YES;
    }
}