にサウンドを再生、私はXcodeの8で作業中、スウィフト3.スウィフト3 - エラースプラッシュスクリーン
私はアプリが起動直後にサウンドを再生するためのコードをやろうとしています。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {}
だからここに私のコードです::私は(AppDelegateに)関数にそれをパット
var opening_sound = AVAudioPlayer()
と後:もちろん
let Nt = URL(fileURLWithPath: Bundle.main.path(forResource: "opp", ofType: "mp3")!)
do {
opening_sound = try AVAudioPlayer(contentsOf: Nt)
opening_sound.prepareToPlay()
} catch {print("Error")}
opening_sound.play()
私はAVFundationをインポートするには。
私はコンソールに入る「エラー」を実行して、行opening_sound.play()
にすると、私は「スレッド1を取得:EXC_BAD_ACCESS(=コード= 1、アドレス0x48)
私はアクティブにゾンビオブジェクトとそれを実行してみましたが、ありません。答え
EDIT:あなたの答えのための おかげ@silicon_valleyに返信するには:。
私が手にエラーが操作を完了できませんでしたです(OSStatusエラー1685348671.)
I、J。 ustも持っていた:objc [31817]:クラス_NSZombie___NSArrayMは両方で実装されていますか? (0x618000047c80)と?? (0x618000047cb0)。 2つのうちの1つが使用されます。どちらが未定義ですか。ゾンビが許可されています。
@Pierceと言ったことを試しましたが、AVAudioplayerをオプションの値にすることはできないため、動作しません。私が... = AVAudioplayer?
と書いた場合、AVAudioplayer?()
の間に "AVAudioPlayerタイプのイニシャライザを呼び出せません"という選択肢があります。議論の余地はありません "。または、AVAudioPlayer?.self
と書いても、コードは正しく実行されません。
if let Nt = Nt {
self.opening_sound = try? AVAudioPlayer(contentsOf: Nt)
}
が動作しないので、コードは:
だから、私は任意の値このようopening_sound開始することができることを考えます。
私は問題がメインスレッドを扱っていると思いますが、私はそれを見ることができません。もちろん、 "opp.mp3"はメインバンドルにあります。
EDIT:(申し訳ありませんが、私はきちんと読んでいない)私はこれだ@Pierceの答えに感謝:
let Nt: URL? = URL(fileURLWithPath: (Bundle.main.path(forResource: "opp", ofType: "mp3"))!)
if let Nt = Nt {
self.opening_sound = try? AVAudioPlayer(contentsOf: Nt)
}
playOpeningSound()
... ...
var opening_sound: AVAudioPlayer?
を
func playOpeningSound() {
if let opening_sound = opening_sound {
if opening_sound.isPlaying {
opening_sound.pause()
}
opening_sound.currentTime = 0
DispatchQueue.global().async {
opening_sound.play()
}
}
エラーはありません。しかし、音が出ない...! ありがとうございます!
をあなたがキャッチで取得エラーとは何ですか? 'catch {print(" Error ")}'を 'catch let error {print(error.localizedDescription)} 'に置き換えると、クラッシュの理由がわかります。また、do ... catchブロックにエラーがあった場合は、 'play'を呼び出すべきではありません。 –
@VincentS - サウンドファイル名とエクステンションが正しく入力されていればうまくいくはずです。どのように記述したら、メインバンドルに 'opp.mp3'というファイルがあることを確認する必要があります。うまくいけば助ける – Pierce
私はヴィンセントに謝罪します。更新された回答を確認してください。オプションのURLとして 'Nt'をキャストするのを忘れました。 'let Nt:URL? ... ' – Pierce