我正在开发iPhone应用程序。
所以我有一个视图控制器,它有一个随机按钮,一个UIImage,一个声音播放按钮和一个UILabel。然后我按下随机按钮我使用开关功能使用一个随机改变UIImage和UILabel的情况,这很完美,但我不知道怎么做,播放按钮产生的声音是不同的。
我的意思是,这甚至可能吗?我知道如何在每次按下播放按钮时使用arc4random()来播放其他内容但我想按下随机按钮时我想要改变声音..希望它能理解我的问题是什么,我很抱歉但我会上传我尽快制作的代码但目前我无法访问它。
答案 0 :(得分:2)
每次按下按钮时播放一个随机声音你可以使用arc4random()
,如你所提到的那样,每次都选择一个不同的mp3文件url的switch语句 - 就像这样。
int random = arc4random_uniform(3);
NSString *soundName;
switch (random)
{
case 0:
soundName = @"soundone"
break;
case 1:
soundName = @"soundtwo"
break;
case 2:
soundName = @"soundthree"
break;
case 3:
soundName = @"soundfour"
break;
}
NSString *soundURL = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:soundURL] error:NULL];
[player play];
为了避免连续两次播放相同的声音,您可以将变量放在.h
中添加一个额外的变量来保存先前生成的随机数,然后使用while()
语句来确保新的生成的随机数与最后一个不一样..
<强>·H 强>
int previousRandomNumber;
int random;
<强>的.m 强>
random = arc4random_uniform(3);
NSString *soundName;
if(random == previousRandomNumber){
while(random == previousRandomNumber){
random = arc4random_uniform(3);
}
}
previousRandomNumber = random;
switch (random)
{
case 0:
soundName = @"soundone"
break;
case 1:
soundName = @"soundtwo"
break;
case 2:
soundName = @"soundthree"
break;
case 3:
soundName = @"soundfour"
break;
}
}
NSString *soundURL = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:soundURL] error:NULL];
[player play];