Ich habe eine Klasse gemacht, die Audio-Griffe, die in meiner app gespielt wird:AVAudioPlayer spielt keinen Ton
import AVFoundation
class GSAudio{
var soundFileNameURL: NSURL = NSURL()
var soundFileName = ""
var soundPlay = AVAudioPlayer()
func playSound (soundFile: String){
soundFileName = soundFile
soundFileNameURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(soundFileName, ofType: "aif", inDirectory:"Sounds")!)
do{
try soundPlay = AVAudioPlayer(contentsOfURL: soundFileNameURL)
} catch {
print("Could not play sound file!")
}
soundPlay.prepareToPlay()
soundPlay.play()
}
}
Aber das Problem ist, wenn ich diesen Code aufrufen, indem Sie so etwas wie GSAudio().playSound("Start")
aus einer anderen Klasse verwenden, Der Sound spielt nicht. Weiß jemand, warum das so ist? Jede Hilfe wird geschätzt.
Vielen Dank.
Ist "GSAudio(). Playsound (" Start ")" den genauen Code Sie verwenden? Wenn dies der Fall ist, müssen Sie playSound wie folgt deklarieren: class fun playSound (soundFile: String) – dylanthelion
Etwas stimmt hier nicht überein, da es sich bei SoundPlay um eine Instanzvariable handelt, benötigen Sie eine Instanz von GSAudio. Und diese Instanz muss bestehen bleiben, bis der Sound endet. Ich schätze, du erschaffst die Instanz und dann wird sie zerstört, bevor der Sound spielt - es ist mir oft genug passiert! Behalten Sie einen permanenten Verweis auf die Instanz, bis sie abgeschlossen ist. – emrys57