2016-03-20 6 views
0

Ich habe eine Reihe von BildernSwift 2: Sound für verschiedene Bilder in Array spielen

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

ich myAudioPlayer geschaffen spielen klingt

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") 

     } 

    } 

Schaltfläche Weiter, die das Bild ändert

@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: Was ich in dieser Methode versuche, ist ein Ton zu spielen, wenn das Bild c hanges. Haben Sie für jedes Bild im Array einen anderen Sound. Wie kann ich das machen? Zum Beispiel "apple" sound1 spielen wird, wird "orange" Sound 2 spielen, wenn das nächste Bild

@IBAction func playButtonTapped(sender: UIButton) { 


    myAudioPlayer.play() 


} 
+0

ist es in dem gleichen Controller, wo Sie Ihre Reihe von Sounds halten? – Miknash

+0

Ja. Es ist in der gleichen Steuerung. – Miguel

Antwort

1

Isolieren Sie Ihre Audio-Laden in Funktion gedrückt wird:

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") 

     } 

    } 
} 

Dann in 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])' dafür bekomme ich Fehlermeldung: "Verwendung von nicht aufgelösten Identifier 'audioList' – Miguel

+0

audioList ist das Array Ihrer Songs – Miknash

+1

Vielen Dank, es funktioniert! – Miguel