再生中に再生音に関する問題が発生しているようです。このスレッドを参照してください。
Playing a sound in a Swift Playground
しかし、私はあなたのコードに変更を加えると、それは仕事を得ることができました。私のコードは次のとおりです。
class Morse:NSObject, AVAudioPlayerDelegate {
private var message = ""
private var dotSound:AVAudioPlayer!
private var dashSound:AVAudioPlayer!
private let dash = Character("-")
private let dot = Character(".")
private var index:String.Index!
init(message:String) {
super.init()
do {
if let url = Bundle.main.url(forResource:"beep_short", withExtension:"mp3") {
self.dotSound = try AVAudioPlayer(contentsOf:url)
self.dotSound.delegate = self
self.dotSound.prepareToPlay()
}
} catch {
NSLog("Error loading dot audio!")
}
do {
if let url = Bundle.main.url(forResource:"beep_long", withExtension:"mp3") {
self.dashSound = try AVAudioPlayer(contentsOf:url)
self.dashSound.delegate = self
self.dashSound.prepareToPlay()
}
} catch {
NSLog("Error loading dash audio!")
}
self.message = message
self.index = message.startIndex
}
func playCharacter() {
let character = message.characters[index]
NSLog("Character: \(character)")
if character == dash {
dashSound.play()
} else if character == dot {
dotSound.play()
}
}
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
NSLog("Finished playing")
if index != message.endIndex {
self.index = message.index(after:index)
playCharacter()
}
}
}
let m = Morse(message:"...---")
m.playCharacter()
PlaygroundPage.current.needsIndefiniteExecution = true
コードを実行するためには、不定期実行を有効にする必要がありました。また、2番目のオーディオファイルの読み込みにいくつかの問題がありましたが、それが主に動作して以来、テストファイルやそれ以外のもので問題が発生したかどうかをさらに調査することはありませんでした。
それは混乱ですあなたが正式な答えとしてコメントを投稿するとき。あなたのこの「答え」はFahimの答えに対するコメントでなければならず、あなたはこの更新されたコードを表示するためにあなたの質問を編集すべきです。 –