0

私はiPhoneアプリに取り組んでいます。

したがって、ランダム ボタン、UIImage、サウンドの再生ボタン、および UILabel を持つビュー コントローラーがあります。次に、ランダムボタンを押して、スイッチ機能を使用してUIImageとUILabelをランダムに変更するケースを使用します。これは完璧に機能しますが、再生ボタンによって生成されるサウンドが異なるようにする方法がわかりません。

つまり、これは可能ですか?再生ボタンを押すたびにarc4random()を使用して何かを再生する方法を知っていますが、ランダムボタンを押すとサウンドを変更したい..私の問題が何であるかを理解していただければ幸いです。申し訳ありませんが、作成したコードをできるだけ早くアップロードしますが、現時点ではアクセスできません。

4

1 に答える 1

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

同じサウンドを 2 回続けて再生しないようにするには、変数を.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 に答える