Как получить Soundfilenames из NSArray и играть? - PullRequest
0 голосов
/ 08 августа 2010

Я хочу воспроизвести несколько аудиофайлов (* .wav), коснувшись соответствующих UImageViews.Каждое прикосновение к UIImageView изменяет «номер триггера» - который выбран.Имена аудиофайлов хранятся в массиве.Но я не могу понять, как написать метод для получения имен и воспроизведения правильных звуков без использования метода выбора регистра с избыточными кодовыми кодами для воспроизведения звуков:

#pragma mark -

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
//Soundfile names in array arrAnimalde
arrAnimalde = [NSArray arrayWithObjects:@"Hund" ,@"Schwein" ,@"Ferkel", nil];

// here are some Views and their triggers
if([touch view] == img_hund){
    trigAnimal = 0;
    }

if([touch view] == img_schwein){
    trigAnimal = 1;
    }

if([touch view] == img_ferkel){
    trigAnimal = 2;
      }

        /* here I'd like to have a method to send the triggernumber and get the 
soundnameposition in the array to play the appropriate sound e. g. "Hund.wav" wich is the first entry
 in the array : I tried something with "self.langKeys objectAtIndex:arrAnimalde" instead of the string in the following code but it 
does'nt work
*/

        //Sound
    AudioServicesCreateSystemSoundID ((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource: @"**here please the right name from the array**" ofType: @"wav"]], &soundFileObject);
    AudioServicesPlaySystemSound (self.soundFileObject);


}

Или это совершенно неправильноподход к ее решению?

Второй связанный с этим вопрос: как я могу поместить три "if ([touch view] == img ..." в более короткий (select-case?) оператор?

Спасибо, что ответили!

1 Ответ

0 голосов
/ 08 августа 2010

Попробуйте это ...

   [arrAnimalde objectAtIndex: trigAnimal]

например

 AudioServicesCreateSystemSoundID ((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource: [arrAnimalde objectAtIndex: trigAnimal] ofType: @"wav"]], &soundFileObject);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...