2017-03-04 13 views
0

音と音楽を再生するにはSKAction.playSoundFileNamedAVAudioPlayerの両方を使用します。Spritekitはゲーム中にiPhoneの音楽を維持する

iPhoneで音楽を再生していてゲームを開くと、ゲームが音楽を停止します。別のゲームを開くと、音楽は止まらない。

誰でも音楽再生の方法を知っていますか?

私のサウンドマネージャクラスは次のとおりです。

class SoundManager { 

    static let sharedInstance = SoundManager() 

    /// Short Incidental Sound SKAction 
    let coin = SKAction.playSoundFileNamed("coin.wav", waitForCompletion: false) 
    let newLevel = SKAction.playSoundFileNamed("newLevel.wav", waitForCompletion: true) 
    let blup = SKAction.playSoundFileNamed("singleWater.wav", waitForCompletion: true) 

    let pop = SKAction.playSoundFileNamed("estrazionePop" + ".wav", waitForCompletion: true) 
    let pip = SKAction.playSoundFileNamed("estrazionePip" + ".wav", waitForCompletion: true) 
    let split = SKAction.playSoundFileNamed("split" + ".mp3", waitForCompletion: true) 
    let fire = SKAction.playSoundFileNamed("fire" + ".wav", waitForCompletion: true) 
    let stoneStop  = SKAction.playSoundFileNamed("stoneStop" + ".wav", waitForCompletion: true) 

    let small = SKAction.playSoundFileNamed("BvS-Exp-Small" + ".wav", waitForCompletion: true) 
    let medium = SKAction.playSoundFileNamed("BvS-Exp-Medium" + ".wav", waitForCompletion: true) 
    let big = SKAction.playSoundFileNamed("BvS-Exp-Big" + ".wav", waitForCompletion: true) 

    let smallBoss = SKAction.playSoundFileNamed("BvS-Exp-Boss-Small" + ".wav", waitForCompletion: true) 
    let mediumBoss = SKAction.playSoundFileNamed("BvS-Exp-Boss-Medium" + ".wav", waitForCompletion: true) 
    let bigBoss = SKAction.playSoundFileNamed("BvS-Exp-Boss-Big" + ".wav", waitForCompletion: true) 

    let bombInizio = SKAction.playSoundFileNamed("BombInizio" + ".wav", waitForCompletion: true) 
    let bombScintilla:SKAudio = SKAudio(fileName: "BombScintilla" + ".wav", numberOfLoops: -1) 
    let bombBoom = SKAction.playSoundFileNamed("BombBoom" + ".wav", waitForCompletion: true) 

    let spiderSvamp = [ 
     SKAction.playSoundFileNamed("Fhh0" + ".wav", waitForCompletion: true), 
     //SKAction.playSoundFileNamed("Fhh1" + ".wav", waitForCompletion: true), non mi piacciono 
     //SKAction.playSoundFileNamed("Fhh2" + ".wav", waitForCompletion: true), 
     SKAction.playSoundFileNamed("Fhh3" + ".wav", waitForCompletion: true), 
     SKAction.playSoundFileNamed("Fhh4" + ".wav", waitForCompletion: true), 
     SKAction.playSoundFileNamed("Fhh5" + ".wav", waitForCompletion: true) 
    ] 

    ///Suoni lunghi 
    var gameover: SKAudio = SKAudio(fileName: "gameover" + ".mp3", numberOfLoops: 0) 
} 

class SKAudio { 
    var audio: AVAudioPlayer! 
    var url: URL? 

    fileprivate var numberOfLoops:Int! 

    ///-1 infinite, 0 = once 
    init(fileName: String, numberOfLoops:Int? = -1) { 
     url = Bundle.main.url(forResource: fileName, withExtension: nil) 
     self.numberOfLoops = numberOfLoops 
    } 

    func playSound() { 
     if (url == nil) { 
      print("Could not find the file \(audio)") 
     } 

     do { 
      audio = try AVAudioPlayer(contentsOf: url!, fileTypeHint: nil) 

     } 
     catch let error as NSError { print(error.debugDescription) 

     } 
     if audio == nil { 
      print("Could not create audio player") 
     } 
     else { 
      audio.prepareToPlay() 
      audio.numberOfLoops = numberOfLoops 
      audio.play() 
     } 
    } 

    func pause() { 
     if let player = audio { 
      if player.isPlaying { 
       player.pause() 
      } 
     } 
    } 

    func resume() { 
     if let player = audio { 
      if !player.isPlaying { 
       player.play() 
      } 
     } 
    } 
    func stop() { 
     if let player = audio { 
      if player.isPlaying { 
       player.stop() 
      } 
     } 
    } 
    func isPlaying() -> Bool { 
     if let player = audio { 
      return player.isPlaying 
     } 
     else { 
      return false 
     } 
    } 
    func increaseVolume(value:Float) { 
     if let player = audio { 
      if player.isPlaying { 
       if player.volume != 1.0 { 
        let incrrease = min(value, 1.0) 
        player.volume += incrrease 
       } 
      } 
     } 
    } 
    func decreaseVolume(value:Float) { 
     if let player = audio { 
      if player.isPlaying { 
       if player.volume != 0.0 { 
        let decr = max(value, 0.0) 
        player.volume -= decr 
       } 
      } 
     } 
    } 
    func setVolume(value:Float) { 
     if let player = audio { 
      var val = max(value, 0.0) 
      val = min(value, 1.0) 
      player.volume = val 
     } 
    } 
} 

おかげ

答えて

1

私は状況を理解していれば、あなたがしたいのための音楽アプリで音楽を聴くことができるよう例と同時に、あなたのゲームをプレイ、右ですか?

私はspriteKitに慣れていませんが、通常のアプリではAVAudioSessionCategoryAmbientを使用して、他のサウンドを止めることはできません。

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient) 
+0

答えていただきありがとうございます:( –

+0

回答ありがとうございました! –

関連する問題