Я пытаюсь вызвать функцию, когда песня заканчивает играть.Вот мой класс аудиоплеера:
import AVFoundation
public class SKTAudio {
public var backgroundMusicPlayer: AVAudioPlayer?
public func playBackgroundMusic(filename: String) {
let url = Bundle.main.url(forResource: filename, withExtension: nil)
if (url == nil) {
print("Could not find file: \(filename)")
return
}
var error: NSError? = nil
do {
backgroundMusicPlayer = try AVAudioPlayer(contentsOf: url!)
} catch let error1 as NSError {
error = error1
backgroundMusicPlayer = nil
}
if let player = backgroundMusicPlayer {
player.delegate = self
player.prepareToPlay()
player.play()
} else {
print("Could not create audio player: \(error!)")
}
}
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer,
// Do stuff
}
}
Однако код не скомпилируется, и строка player.delegate = self
возвращает эту ошибку:
Невозможно присвоить значение типа 'SKTAudio «напечатать» AVAudioPlayerDelegate? '
И дает возможность:
Вставить' как!AVAudioPlayerDelegate '
Компилируется, но при запуске вылетает и возвращает в консоли следующее:
Не удалось привести значение типа' Scene.SKTAudio '(0x102ebf7b0)to 'AVAudioPlayerDelegate'
Где playBackgroundMusic()
вызывается в сцене.Я не имею ни малейшего понятия, что делать в этот момент, я пытался следить за различными другими сообщениями, но, похоже, никто не сталкивался с проблемой со строкой player.delegate = self
.Спасибо