2016-04-09 10 views
2

これは初めてSKAudioNodeを使用する場合です。最初に私は私のGameSceneクラスの最上部にプロパティを宣言:fileNamedを使用してSKAudioNodeを初期化すると、nilが返されます

var backgroundMusic: SKAudioNode! 

私はヘルパーメソッドを追加しました:

func playBackgroundMusic(name: String) { 
    if backgroundMusic != nil { 
     backgroundMusic.removeFromParent() 
    } 

    backgroundMusic = SKAudioNode(fileNamed: name) 
    backgroundMusic.autoplayLooped = true 
    addChild(backgroundMusic) 
} 

は今、私はこのように、このメソッドを呼び出した:

playBackgroundMusic("ABC.caf") 

それこの行に致命的なエラーが発生します。

backgroundMusic.autoplayLooped = true 

Saying:予期せぬものが見つかりました。

は私が

  • ABC.cafは私のプロジェクトであり、コピーバンドルのリソースにリストされている、次のことを確認しました。
  • 正しく入力されています。

他にどこでエラーをチェックする必要がありますか?

EDIT:

  • のXcodeのiOS 9.3とiOSの9.3.2
  • シミュレータで7.3
  • iPhone

両方:ここ

は私の構成情報ですデバイスとシミュレータが動作しません。

EDIT2:

私を次のように私のコードを変更:

func playBackgroundMusic(name: String) { 
    if backgroundMusic != nil { 
     backgroundMusic.removeFromParent() 
    } 

    let temp = SKAudioNode(fileNamed: name) 
    temp.autoplayLooped = true 
    backgroundMusic = temp 
    //backgroundMusic = SKAudioNode(fileNamed: "SpaceGame.caf") 
    //backgroundMusic.autoplayLooped = true 
    addChild(backgroundMusic) 
} 

今、私のアプリはもうクラッシュしませんが、それは何の音を持っていません。何か案は?

P.S.最後にその質問を編集した後、その方法のすべてを次のものに置き換えようとしました:

runAction(SKAction.playSoundFileNamed(name, waitForCompletion: false)) 

サウンドがまだありません。おそらくサウンドファイルの問題?

+0

あなたはXcode 7.3を正しく使用していますか? http://stackoverflow.com/q/36273271/3402095私にとって間違ったファイル名を指定してもXcode 7.1.1を使用すると、 'backgroundMusic'はnilとして終わることはなく、何らかの"空の "SKAudioNode 。それでも、クラッシュすることはありません。ちなみに、サウンドを再追加しようとしましたか?あなたは知っている、それをプロジェクトから削除し、次に製品 - >きれいに行く、プロジェクトに同じ音を再びドラッグし、バンドルリソースのコピーセクションに追加...これはいくつかの奇妙なキャッシングの問題に関連していない私はそれを疑います)。 – Whirlwind

+0

@Whirlwindはい、Xcode 7.3を使用しています。私は、音楽ファイルを削除して、プロジェクトに戻してそれを再び追加して、きれいにしました。それでも、オプションがアンラッピングされている間にnilが見つかったのでクラッシュします。 –

+0

"ABC.caf"の代わりに "ABC"だけを試しましたか? –

答えて

1

私は上記のEDIT2に入れたコードでこの問題を修正:念のあなたのiPhone上のサイドスイッチが赤にない作る無音部分について

func playBackgroundMusic(name: String) { 
    if backgroundMusic != nil { 
     backgroundMusic.removeFromParent() 
    } 

    let temp = SKAudioNode(fileNamed: name) 
    temp.autoplayLooped = true 
    backgroundMusic = temp 
    //backgroundMusic = SKAudioNode(fileNamed: "SpaceGame.caf") 
    //backgroundMusic.autoplayLooped = true 
    //addChild(backgroundMusic) 
    runAction(SKAction.playSoundFileNamed(name, waitForCompletion: false)) 
} 

+0

これは顔の手のひらにふさわしいと思っています。今は働いているので、一時的に取り出して、再び動作するかどうかを確認してください。私はSKAudioNodeがヘッドフォンジャックに問題があることを知っています、おそらくスイッチにも問題があります。 – Knight0fDragon

11

この問題が発生しました。どうやら、ローカル変数でしか動作しないようです。以下のコードが機能しました。

var background:SKAudioNode! 

override func didMoveToView(view: SKView) { 
    let bg = SKAudioNode(fileNamed: "bg.mp3") 
    addChild(bg) 
    background = bg 
} 
+0

これは実際に動作します。どうもありがとう! :D – appcodix

+0

優秀、+1、なぜですか? –

関連する問題