2014-02-17 205 views
2

我希望我的SpriteKit遊戲不會中斷用戶收聽的背景音樂(Music.app或廣播應用程序)。SKAction playSoundFileNamed停止背景音樂

sSharedShootSoundAction = [SKAction playSoundFileNamed:@"plane_shoot.aiff" 
            waitForCompletion:NO]; 

此行的背景音樂停止後:直到執行到達此行

一切順利。如何避免這種情況?

+0

是否預裝了該音頻文件? – prototypical

+0

不,這不是... –

+0

嘗試預加載它... :) – prototypical

回答

6

我自己也遇到過這個問題。僅供參考,我的解決方案很快,所以如果您仍在使用它,請將其轉換爲Objective C。

對我來說,我的解決方案包括兩個部分。首先,我必須在場景文件的didMoveToView函數中初始化我的SoundAction SKAction。所以,你的場景文件應該是這個樣子:

import SpriteKit 
import GameKit 
import AVFoundation 

class GameScene: SKScene, SKPhysicsContactDelegate { 

    var sSharedShootSoundAction: SKAction = SKAction() 

    override func didMoveToView(view: SKView) { 
     /* Setup your scene here */ 
     sSharedShootSoundAction = SKAction.playSoundFileNamed("plane_shoot.aiff", waitForCompletion: false) 
    } 

} 

然後在您的AppDelegate文件,你需要將下面的代碼行中的應用程序didFinishLaunchingWithOptions功能。 (請勿忘記導入您的APPDELEGATE AVFOUNDATION)。所以你的應用代理方法應該像這樣:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 

    // INSERT THIS LINE BELOW. 
    AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient, error: nil) 

    return true 
} 

希望這能爲你解決它,就像它爲我做的那樣!讓我知道如果它不。