首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >场景更改后音乐停止播放SKAudioNode Xcode 8

场景更改后音乐停止播放SKAudioNode Xcode 8
EN

Stack Overflow用户
提问于 2017-02-13 16:01:16
回答 1查看 672关注 0票数 0

因此,我一直试图让这个音频文件播放游戏的所有场景,但它切断后,MenuScene。我叫MenuSceneGameViewController

代码语言:javascript
复制
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

然后,在MenuScene中,我以这样的方式开始音乐。

代码语言:javascript
复制
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)

音乐开始播放了。然后,我在touchesBegan ()中,如果GameScene按钮被触摸,它将加载该场景。我进行了很长时间的转换,以了解音乐何时停止并在整个转换过程中播放,但是当加载GameScene时,它就停止了。

代码语言:javascript
复制
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)

我希望它继续玩整个游戏和在GameOver现场和循环永远。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 16:55:30

确保您在主SKScene和

你可以这样做:

代码语言:javascript
复制
self.runAction(SKAction.playSoundFileNamed("YourFileName.extension", waitForCompletion: false))

重复音乐:

代码语言:javascript
复制
SKAction.repeatForever(SKAction.playSoundFileNamed("YourFileName.extension", waitForCompletion: true))

你的音乐会继续播放..。

用AVFoundation

我做过的代码之一。

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42208347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档