现在我只用一个动作,按钮按钮,加速度计等播放单个声音。
我想知道如何通过用户启动的单个操作循环播放几个声音(我正在为我的项目使用3个声音)。
我目前正在使用下面显示的代码,它的目的是为每个用户操作播放单个声音。我以前没有在项目中使用过NSArray,所以如果你包含它,请包括任何细节。
NSURL *url = [NSURL fileURLWithPath: [NSString stringWithFormat:@"%@/Jet.wav", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = 0;
if (audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[audioPlayer play];
答案 0 :(得分:1)
如果您只使用3种声音,那么只需使用NSString
的C数组即可,但如果您需要动态的声音,则应更改为使用NSArray
// .m
NSString *MySounds[3] = {
@"sound1.wav",
@"sound2.wav",
@"sound3.wav",
};
@implementation ...
然后在你的方法中你需要添加一些额外的逻辑
- (void)playSound;
{
NSString *path = [NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], [self nextSoundName]];
NSURL *url = [NSURL fileURLWithPath:path];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = 0;
if (audioPlayer == nil) {
NSLog(@"%@", [error description]);
} else {
[audioPlayer play];
}
}
- (NSString *)nextSoundName;
{
static NSInteger currentIndex = -1;
if (++currentIndex > 2) {
currentIndex = 0;
}
return MySounds[currentIndex];
}
答案 1 :(得分:0)
-(IBAction)playSound:(UIButton *)sender{
NSURL *url = [NSURL fileURLWithPath: [NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] resourcePath], [MySounds objectAtIndex:[sender tag]]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = 0;
if (audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[audioPlayer play];
}
在这里,您可以对所有按钮使用单个操作按钮。您需要做的就是将标签设置为按钮。使用Paul所描述的数组