0

我是 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];
}
4

2 回答 2

1

当您遇到困难时,最好的方法是查看文档。

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

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

查看实例方法,那里有一个方法叫停止。

所以在第一种方法中,你可以做类似的事情

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

[player1 play];
于 2013-07-04T12:09:04.697 回答
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);
}
于 2013-07-04T11:56:23.187 回答