我在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];
}
答案 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);
}