2017-02-13 10 views
0

私はこのオーディオファイルをゲームのすべてのシーンで再生しようとしていますが、MenuSceneの後は切り取られています。私はその後、MenuSceneに私はこれを行うことにより、音楽を始める音楽がシーンチェンジ後に再生されなくなるSKAudioNode Xcode 8

class GameViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let view = self.view as! SKView? { 
     // Load the SKScene from 'MenuScene.sks' 
     if let scene = SKScene(fileNamed: "MenuScene") { 
      // Set the scale mode to scale to fit the window 

GameViewController

から MenuSceneを呼び出します。

class MenuScene: SKScene { 

var starfield:SKEmitterNode! 

var newGameButtonNode:SKSpriteNode! 
var difficultyButtonNode:SKSpriteNode! 
var difficultyLabelNode:SKLabelNode! 
var backgroundMusic:SKAudioNode! 

override func didMove(to view: SKView) { 


    let backgroundMusic = SKAudioNode(fileNamed: "Snap.mp3") 
    backgroundMusic.autoplayLooped = true 
    addChild(backgroundMusic) 

音楽が再生されます。 GameSceneボタンがタッチされると、そのシーンがロードされます。touchesBegan()私は、音楽が停止して全トランジションで再生されたときに、本当に長い間トランジションを実行しましたが、GameSceneがロードされると停止します。

if nodesArray.first?.name == "newGameButton" { 

      let transition = SKTransition.fade(withDuration: 5.0) 

      run(SKAction.wait(forDuration: 5.0), completion: { 
       self.backgroundMusic = SKAudioNode(fileNamed: "Snap.mp3") 
       self.backgroundMusic.autoplayLooped = true 
       self.addChild(self.backgroundMusic) 
      }) 
      let gameScene = GameScene(size: self.size) 

      self.view!.presentScene(gameScene, transition: transition) 

ゲーム全体やゲームオーバーシーンで再生を続け、永遠にループしたいと思っています。

答えて

1

あなたはこのような何か行うことができますあなたのメインSKScene内と

ていることを確認してください:

self.runAction(SKAction.playSoundFileNamed("YourFileName.extension", waitForCompletion: false)) 

繰り返しミュージック:

SKAction.repeatForever(SKAction.playSoundFileNamed("YourFileName.extension", waitForCompletion: true)) 

あなたの音楽を演奏し続けます。..

With AVFoundation

私のコードは私が行った。

import AVFoundation 


var backgroundMusicPlayer: AVAudioPlayer! 

func playBackgroundMusic(filename: String) { 
let url = NSBundle.mainBundle().URLForResource(
filename, withExtension: nil) 
if (url == nil) { 
print("Could not find file: \(filename)") 
return 
} 

var error: NSError? = nil 
backgroundMusicPlayer = 
AVAudioPlayer(contentsOfURL: url, error: &error) 
if backgroundMusicPlayer == nil { 
print("Could not create audio player: \(error!)") 
return 
} 

backgroundMusicPlayer.numberOfLoops = -1 
backgroundMusicPlayer.prepareToPlay() 
backgroundMusicPlayer.play() 
} 

    import SpriteKit 
+0

どのように私はこれを試してみましたか、私はこれを試して、それは各シーンを介して1回だけ再生されます。 – cuber

+0

私の更新された答えを確認してください –

+0

私はあなたがそれのすぐ下に追加した行を入れて、曲は繰り返されませんでした。これは、私のMenuSceneはゲームの始めにしか呼び出されませんが、GameSceneとGameOverSceneは、尊重されたボタンが押されたときにお互いを呼び出すためです。 MenuSceneで再生し、GameSceneとGameOverScenesで繰り返し再生するにはどうすればよいですか? – cuber

関連する問題