2015-02-28 1 views
0

est la méthode ici dans une classe:AVAudioPlayerDelegate ne remet pas la méthode

import UIKIt 
import Foundation 

class notMoving { 



var drumPlayerObject = drumPlayer() 
var fileManagerObject = fileManager1() 
let drumStrength = 1 
var bassStrength = 1 
var synthStrength = 1 
var indexToPlay: Int = 0 




// here we start the drum player. 
func startToPlay() { 
fileManagerObject.clearPlayedListDrum(drumStrength, KeyNoteOfInstDrum: "C") 
    if let indexToPlay = fileManager1().randomizeTheNextInstrument(fileManager1().drums, Strength: drumStrength, KeyNote: "C") { 
    fileManager1().drums[indexToPlay].4 = true 
     self.indexToPlay = indexToPlay 
    } 
let instrument = fileManager1().drums[self.indexToPlay].0 
let name = fileManager1().drums[self.indexToPlay].1 
let length = fileManager1().drums[self.indexToPlay].2 
let power = fileManager1().drums[self.indexToPlay].3 
let ifplayed = fileManager1().drums[self.indexToPlay].4 
let tempo = Double(fileManager1().drums[self.indexToPlay].5) 
let bridge: Bool = false 
let extention = fileManagerObject.extentionOfFile 
let loops = fileManager1().drumNumberOfLoops() 

    drumPlayerObject.play(instrument, name: name, extentionOfFile: extention, length: length, power: power, ifplayed: ifplayed, tempo: tempo, loops: loops, bridge: bridge) 

    fileManager1().clearPlayedListDrum(drumStrength, KeyNoteOfInstDrum: "C") 


    } 
} 

Et voici l'extension AVAudioPlayerDelegate pour une classe drumPlayer.

extension drumPlayer : AVAudioPlayerDelegate { 
    func audioPlayerDidFinishPlaying(player: AVAudioPlayer!, successfully flag: Bool) { 
     println("finished playing \(flag)") 
     var notMovingObject = notMoving() 
     notMovingObject.startToPlay() 


    } 


    func audioPlayerDecodeErrorDidOccur(player: AVAudioPlayer!, error: NSError!) { 
     println("\(error.localizedDescription)") 
    } 


} 

Mais audioPlayerDidFinishPlaying ne remet pas la méthode startToPlay après que le fichier est finished.It juste imprime seulement « fini de jouer vrai »

Ce que je fais mal?

+0

Note de côté: Les noms de classe devraient commencer par un capital – HorseT

+0

Merci HorseT! Je vais le corriger) Mais avez-vous des idées sur la question?) –

Répondre

0

J'ai trouvé une solution en créant une instance self.notMovingObject = NotMoving() dans le "func play" de mon lecteur. L'instance est créée uniquement après le démarrage du lecteur.

0

Votre notMovingObject n'est pas conservé n'importe où, donc après la sortie du programme audioPlayerDidFinishPlaying() l'objet est désaffecté.

+0

Ok. Et quelle solution pourriez-vous suggérer? –

+0

La solution la moins invasive serait probablement d'ajouter la variable d'instance 'notMovingObject' dans la classe' drumPlayer'. Cependant, je ne peux pas dire si sa bonne solution que je n'ai pas une image plus grande. –

+0

J'ai essayé de l'ajouter, mais cela me donne l'erreur Thread1: EXC_BAD_ACCESS (code = 2, adresse = 0x7fff5ddb7fe8) et ceci dans la sortie (lldb). –