使用按钮生成随机声音

时间:2013-09-18 08:13:27

标签: iphone ios objective-c

我正在开发iPhone应用程序。

所以我有一个视图控制器,它有一个随机按钮,一个UIImage,一个声音播放按钮和一个UILabel。然后我按下随机按钮我使用开关功能使用一个随机改变UIImage和UILabel的情况,这很完美,但我不知道怎么做,播放按钮产生的声音是不同的。

我的意思是,这甚至可能吗?我知道如何在每次按下播放按钮时使用arc4random()来播放其他内容但我想按下随机按钮时我想要改变声音..希望它能理解我的问题是什么,我很抱歉但我会上传我尽快制作的代码但目前我无法访问它。

1 个答案:

答案 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];