0

我正在开发一个 iPhone 应用程序。

所以我有一个视图控制器,它有一个随机按钮、一个 UIImage、一个声音播放按钮和一个 UILabel。然后我按下随机按钮我使用开关功能来使用一个随机更改 UIImage 和 UILabel 的案例,这很完美,但我不知道如何做到这一点,播放按钮产生的声音会有所不同。

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

4

1 回答 1

2

要在每次按下按钮时播放随机声音,您可以使用arc4random()您提到的 switch 语句,每次选择不同的 mp3 文件 url - 像这样。

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];
于 2013-09-18T08:39:30.823 回答