第二个播放时停止第一个声音

时间:2013-07-04 11:51:03

标签: ios objective-c

我在Objective-c和其他环境中都是绝对的初学者,所以请耐心等待。这是我的问题:我需要播放声音文件,以便每个声音文件在另一个启动时停止,现在它们重叠;这是我的代码片段。 如果您需要其他详细信息,请提前告知我们。

- (IBAction)soundfirst {
    NSString *path =
        [[NSBundle mainBundle] pathForResource:@"hi2" ofType:@"mp3"];

    player1 = [[AVAudioPlayer alloc]
        initWithContentsOfURL:[NSURL fileURLWithPath:path]
                        error:NULL];

    player1.delegate = self;
    [player1 play];
}
- (IBAction)soundsecond {
    [player1 stop];

    NSString *path =
        [[NSBundle mainBundle] pathForResource:@"hi2" ofType:@"mp3"];

    player2 = [[AVAudioPlayer alloc]
        initWithContentsOfURL:[NSURL fileURLWithPath:path]
                        error:NULL];

    player2.delegate = self;
    [player2 play];
}

2 个答案:

答案 0 :(得分:1)

当你遇到困难时,最好的办法就是查看文档。

在你的代码中,你正在创建一个AVAudioPlayer类型的对象,并将其命名为player1。

AVAudioPlayer文档: http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

查看实例方法,并且有一个名为stop的方法。

因此,在第一种方法中,您可以执行类似

的操作
if(player2.playing){
    [player2 stop];
}

[player1 play];

答案 1 :(得分:0)

#import <AudioToolbox/AudioServices.h>

SystemSoundID buttonClickSoundID;

+ (void)playButtonClickSound {
    if (buttonClickSoundID == 0) {
        NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"button_click" ofType:@"wav"];
        CFURLRef soundURL = (CFURLRef)[NSURL fileURLWithPath:soundPath];
        AudioServicesCreateSystemSoundID(soundURL, &buttonClickSoundID);
    }
    AudioServicesPlaySystemSound(buttonClickSoundID);
}