SpriteKit Swift 2.0游戏:按钮&跨多个场景的节点

时间:2016-03-19 19:01:00

标签: swift button audio sprite-kit scene

我正在使用Xcode 7.2.1并且是Swift的新手。

我有一个场景,顶部有一个按钮,播放和暂停音乐。 如何在多个场景中使用此按钮?我希望这个按钮出现在我的所有场景中(菜单,关卡选择,游戏......)

游戏视图控制器代码:

let filePath = NSBundle.mainBundle().pathForResource("gametrack1", ofType: "mp3")        
if let filePath = filePath {
    let fileURL = NSURL(fileURLWithPath: filePath)
        do{
            try AudioPlayer = AVAudioPlayer(contentsOfURL: fileURL)
            AudioPlayer.play()
        }catch
        { print("error") }
    }

和保持暂停/播放按钮的场景,以及按下时的操作:

import Foundation
import SpriteKit
import AVFoundation

class PlayPauseOverlay: SKScene {    

var buttonPlayPause = SKSpriteNode()    

override func didMoveToView(view: SKView) {

    if musicPlaying == true
    { buttonPlayPause = SKSpriteNode(imageNamed: "buttonPause") } else
    { buttonPlayPause = SKSpriteNode(imageNamed: "buttonPlay") }
    buttonPlayPause.size = CGSizeMake(50, 50)
    buttonPlayPause.position = CGPoint(x: self.frame.width/2, y: self.frame.height - 50)
    self.addChild(buttonPlayPause)


}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    for touch: AnyObject in touches {

        let location = touch.locationInNode(self)

        if buttonPlayPause.containsPoint(location) {

            if musicPlaying == true{
                //we want to pause and show a play button
                musicPlaying = false
                buttonPlayPause.texture = SKTexture(imageNamed: "buttonPlay")
                print("pause")
                AudioPlayer.pause()
            }else{
                musicPlaying = true
                buttonPlayPause.texture = SKTexture(imageNamed: "buttonPause")
                print("play")
                AudioPlayer.play()
            }
        }else{ ... }
    }
}

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
}
}

如何获取此场景中的所有信息(工作按钮)并使其可用于其他没有复制粘贴的场景?我如何基本重叠两个场景?提前谢谢。

1 个答案:

答案 0 :(得分:0)

最简单的实现方法是以编程方式或在界面构建器中的视图控制器中创建按钮。因为所有场景都在同一个视图控制器中运行。所以只需从界面构建器中拖出一个按钮,给它一些不错的布局,并在viewcontroller类中将一个函数连接到它。

然后在该函数内部运行代码以暂停/播放音频。