2016-03-20 4 views
0

я получил массив изображенийSwift 2: воспроизведение звука для различных изображений в массиве

var cardImages = ["bellota", "manzana", "botas"] 

я создал myAudioPlayer играть звуки

let filePath = NSBundle.mainBundle().pathForResource("correct", ofType: "wav") 

    if let filePath = filePath 
    { 

     let filePathURL = NSURL(fileURLWithPath: filePath) 

     do { 

      try myAudioPlayer = AVAudioPlayer(contentsOfURL: filePathURL) 


     } catch { 

      print("error") 

     } 

    } 

Следующая кнопка, которая изменяет изображение

@IBAction func nextButtonTapped(sender: UIButton) { 

    if imageIndex < 0 { 

     imageIndex = maxImages 
    } 


    cardImageView.image = UIImage(named: cardImages[imageIndex]) 

    imageIndex++ 

    if imageIndex > maxImages { 

     imageIndex = 0 
    } 

    cardImageView.image = UIImage(named: cardImages[imageIndex]) 
} 

playSound Button: То, что я пытаюсь сделать в этом методе, - это воспроизведение звука, когда изображение c hanges. Иметь другой звук для каждого изображения в массиве. Как я могу это сделать? Например, «яблоко» будет играть SOUND1, «оранжевый» будет играть звук 2, когда следующее изображение нажимается

@IBAction func playButtonTapped(sender: UIButton) { 


    myAudioPlayer.play() 


} 
+0

Это тот же контроллер, где вы храните свой массив звуков? – Miknash

+0

Да. Он находится в одном контроллере. – Miguel

ответ

1

Изолировать звуковую нагрузку в функции:

func setTrack(audioName: String){ 


    let filePath = NSBundle.mainBundle().pathForResource(audioName, ofType: "wav") 

    if let filePath = filePath 
    { 

     let filePathURL = NSURL(fileURLWithPath: filePath) 

     do { 

      try myAudioPlayer = AVAudioPlayer(contentsOfURL: filePathURL) 


     } catch { 

      print("error") 

     } 

    } 
} 

Тогда в nextButtonPressed:

@IBAction func nextButtonTapped(sender: UIButton) { 

    if imageIndex < 0 { 

     imageIndex = maxImages 
    } 


    cardImageView.image = UIImage(named: cardImages[imageIndex]) 

    imageIndex++ 

    if imageIndex > maxImages { 

     imageIndex = 0 
    } 

    cardImageView.image = UIImage(named: cardImages[imageIndex]) 
    self.setTrack(audioList[imageIndex]) // or any other index you need/you have 
} 
+0

'self.setTrack (audioList [imageIndex])' для этого я получаю сообщение об ошибке: «Использование неразрешенного indentifier 'audioList' – Miguel

+0

audioList - это массив ваших песен – Miknash

+1

Спасибо, что он работает! – Miguel