ゲームでサウンドを再生するのに厄介な問題がありますが、AVAudioPlayerで出力が得られないようです。もともとこれはクラスとしてセットアップされていましたが、うまくいかなかったときに問題があるかどうかを確かめるためにサウンド出力をハードコーディングしてみました。それでも動作しませんでした。問題のあるオーディオファイルやフォーマットを除外するために、いくつかの異なるファイルを試しました.URLは取得されていますが、audioPlayerはサウンドを出力していないようです。AVAudioPlayerではなくSKActionで再生するサウンド
私は同様の問題についていくつかのスレッドを読んで、システムサウンドの設定を手伝ってきましたが、違いはありません。 Simulatorがいくつかの状況でサウンドを出力することはできないと示唆されていますが、ここではそうは思われません。
let myFile = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("gong", ofType: "wav")!)
print ("URL data: \(myFile)")
do{
let audioPlayer = try AVAudioPlayer(contentsOfURL:myFile)
audioPlayer.prepareToPlay()
audioPlayer.play()
}catch {
print("Error playing sound")
}
しかし、これは罰金果たし:
self.runAction(SKAction.playSoundFileNamed("gong", waitForCompletion: false))
私は停止を開始し、それがループとして音の音量をコントロールできるようにしたいと私はAVAudioPlayerの機能を必要としています。私はXCode 7.3.1とSwift 2.2を使用しています。
アイデア?
多くのおかげで、 Kwを
あなたはAVFoundationを正しくインポートしましたか? – Pierce
はい。私はそれを解決したと思う。私は永続的なスコープ内のインスタンスをAVAudioPlayer上に作成して、自動ガベージコレクションによって削除されないようにする必要がありました。また、私は、prepareToPlayコマンドは、プレイコマンドが実行される前にファイルをメモリにロードする時間がなく、プレイヤーもスコープ外に出て、呼び出されたコードブロックが終了したときにほぼ即座に収集されると思います。結果:演奏する機会ではありません。 prepareToPlayを使ってinit()ステージですべてのサウンドをメモリにプリロードするクラスを作成し、即座に再生するために呼び出すことができます。ありがとう – Kwangle
これは私が言うつもりだったものです、私は 'prepareToPlay'メソッドを使ったことは一度もありませんでした。 – Pierce