2017-07-25 6 views
0

Comment créer une fonction à partir de ce code dans swift3?Créer une fonction à partir du code

J'ai un bouton qui est pressé joue alors ce son « push »

Comment peut-il être simplifié quand il y a beaucoup de boutons? Je ne veux pas ajouter tous les codes à tous les boutons.

var myAudio = AVAudioPlayer() 
// Add sound 
     do { 
      try myAudio = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: 
       Bundle.main.path(forResource: "push", ofType: "mp3")!) as URL) 
     } catch { 
      NSLog("No file!") 

     } 
//call the sound 
myAudio.play() 

J'ai fait ce changement

func play(name : String){ 

     do { 
      try myAudio = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: 
       Bundle.main.path(forResource: name, ofType: "mp3")!) as URL) 

     } catch { 
      NSLog("No file!") 

     } 


    } 

    @IBAction func buttonFirst(_ sender: UIButton) { 

     play(name: "push") 
     myAudio.play() 

    } 

    @IBAction func buttonSecond(_ sender: UIButton) { 
     play(name: "second") 
     myAudio.play() 
    } 

Je suis cette sortie: 25/07/2017 16
: 13: 23,270349 + 0100 son [1728: 933024] [aqme] 254: AQDefaultDevice (173): saut du flux d'entrée 0 0 0x0

Est-ce un problème?

+0

Comment avez-vous créé vos boutons, à partir de code ou de m IB? –

+0

J'ai créé à partir de IB (IBaction) – bblori

Répondre

0

Je pense que vous avez oublié le préparer

var audioPlayer = AVAudioPlayer() 
    let sound = URL(fileURLWithPath: Bundle.main.path(forResource: "sound", ofType: "mp3")!) 

    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
    try! AVAudioSession.sharedInstance().setActive(true) 

    try! audioPlayer = AVAudioPlayer(contentsOf: sound) 
    audioPlayer.prepareToPlay() 
    audioPlayer.play() 
0

Vous pouvez l'utiliser de la manière suivante

var myAudio : AVAudioPlayer? 

func playSound(){ 
    let path = Bundle.main.path(forResource: "push", ofType:"mp3")! 
    let url = URL(fileURLWithPath: path) 

    do { 
     let sound = try AVAudioPlayer(contentsOf: url) 
     self.myAudio = sound 
     sound.numberOfLoops = 1 
     sound.prepareToPlay() 
     sound.play() 
    } catch { 
     print("error loading file") 
     // couldn't load file :(
    } 
} 

En outre, vous pouvez utiliser SwiftySound qui vous permet de jouer des sons facilement dans Swift 3. par exemple

Sound.play(file: "push.mp3")