2011-04-23 2 views
4

Довольно просто, я использую одну кнопку, которая генерирует случайное число, а затем с помощью переключателя/футляра, он оживляет изображение и воспроизводит звук. Моя проблема заключается в том, что при повторном нажатии кнопки звук, который воспроизводился раньше, не останавливается, и звук перекрывается.Остановите звук, используя ту же самую кнопку, которая воспроизводит его

Вот код:

- (IBAction) pushme: (id) sender{ 
int random = (arc4random()%10); 
switch (random) { 
    case 0: { 
      [ANIMATION NUMBER 0] 

      NSString *path = [NSString stringWithFormat:@"%@%@",[[NSBundle mainBundle] resourcePath],@"/sound0.wav"]; 
      SystemSoundID soundID; 
      NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; 
      AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID); 
      AudioServicesPlaySystemSound(soundID); 
     } 
     break; 
    case 1: { 
      [ANIMATION NUMBER 1] 

      NSString *path = [NSString stringWithFormat:@"%@%@",[[NSBundle mainBundle] resourcePath],@"/sound1.wav"]; 
      SystemSoundID soundID; 
      NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; 
      AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID); 
      AudioServicesPlaySystemSound(soundID); 
    } break; //Lots more cases after this one 

Я знаю, что это не самый лучший способ сделать это, объявляя ту же переменную снова и снова. , но есть ли способ остановить его, прежде чем он сыграет другой?

+1

LOL Я только что открыл ответ на свой вопрос. – Nicolas

+0

Отлично! Пожалуйста, напишите ответ здесь, чтобы другие могли воспользоваться вашими исследованиями. –

+0

добавлено :) очень просто – Nicolas

ответ

8

Я только что подтвердил ответ на свой вопрос.

Что я сделал

  1. Объявить SoundSystemID soundID; в заголовке.
  2. Добавьте эту строку перед случайным числом получает генерируется: AudioServicesDisposeSystemSoundID(soundID);

Помните, что если вы собираетесь воспроизводить звук снова, вам нужно будет загрузить ресурс снова после того, как его утилизировать.

Благодарю вас, ребята, в любом случае.

Смежные вопросы