Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用精灵套件和swift 2更改按下按钮时的场景_Ios_Sprite Kit_Scene - Fatal编程技术网

Ios 如何使用精灵套件和swift 2更改按下按钮时的场景

Ios 如何使用精灵套件和swift 2更改按下按钮时的场景,ios,sprite-kit,scene,Ios,Sprite Kit,Scene,我是swift新手,在阅读本教程后,我尝试添加一些额外的功能。我想做的是结合数字宠物的元素,比如iOS游戏“最好的朋友”。首先,我添加了一个主场景()和几个按钮,当按下按钮时,场景会改变。下面是我用来实现它的代码。 MainSceneControl.swift: import UIKit import SpriteKit class MainSceneController: UIViewController { @IBOutlet weak var settingButton: UI

我是swift新手,在阅读本教程后,我尝试添加一些额外的功能。我想做的是结合数字宠物的元素,比如iOS游戏“最好的朋友”。首先,我添加了一个主场景()和几个按钮,当按下按钮时,场景会改变。下面是我用来实现它的代码。 MainSceneControl.swift:

import UIKit
import SpriteKit

class MainSceneController: UIViewController {

    @IBOutlet weak var settingButton: UIButton!
    @IBOutlet weak var storeButton: UIButton!
    @IBOutlet weak var petsButton: UIButton!
    @IBOutlet weak var levelButton: UIButton!

    override func prefersStatusBarHidden() -> Bool {
        return true
    }

    override func shouldAutorotate() -> Bool {
        return true
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let mainScene = MainScene(size:CGSize(width: 320, height: 568))
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true
        skView.ignoresSiblingOrder = true
        mainScene.scaleMode = .AspectFill
        skView.presentScene(mainScene)
    }

    @IBAction func changeScene(sender: UIButton) {
        let labelText = sender.titleLabel?.text!
        print(labelText)
        switch (labelText!) {
            case "LevelButton":
                let scene = LevelScene(size:CGSize(width: 320, height: 568))
                let reveal = SKTransition.fadeWithDuration(1)
                scene.scaleMode = SKSceneScaleMode.AspectFill
                scene.view?.presentScene(scene, transition: reveal)
            case "PetsButton":
                let scene = PetsScene(size:CGSize(width: 320, height: 568))
                let reveal = SKTransition.fadeWithDuration(1)
                scene.scaleMode = SKSceneScaleMode.AspectFill
                scene.view?.presentScene(scene, transition: reveal)
            default:
                break
        }

    }

}

import SpriteKit

class PetsScene: SKScene {

    override init(size: CGSize) {
    super.init(size: size)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func didMoveToView(view: SKView) {
        backgroundColor = SKColor.redColor()
        let mylabel = SKLabelNode(fontNamed: "Chalkduster")
        mylabel.text = "PetsScene"
        mylabel.fontSize = 70
        mylabel.position = CGPoint(x: self.frame.size.width / 2, 
                                   y: self.frame.size.height / 2)
        self.addChild(mylabel)
    }

}

当我按下按钮时,场景没有改变。我也使用segue来实现它。但这似乎不是我想要的。我已经寻找了一些项目的源代码,但我找不到类似的源代码。如果您有任何建议,我将不胜感激。

我不确定这是否是您想要的,但这是我用于在场景之间转换的方法。我不使用Segues。我不知道为什么,除此之外,我从来没有费心去学习如何很好地使用它们来默认它们。我甚至很少使用故事板。下面的代码是如何从场景转换到另一个即时代码的示例。我通常有一个GlobalFunctions.swift文件,其中包含许多类共享的函数,在这样一个文件中应该包含以下内容:

func transitionToScene(node: String, sendingScene: SKScene) {

    //println("Entering transition to scene method with \(node) and \(sendingScene.name)")

    let transDur = 1.5
    let transition = SKTransition.fadeWithColor(sendingScene.backgroundColor, duration: transDur)

    var scene = SKScene()
    switch node {
        case splashSceneString:
            scene = SplashScene(size: sendingScene.size)
        case gameSceneString:
            scene = GameScene(size: sendingScene.size)
        case optionsSceneString:
            scene = OptionsScene(size: sendingScene.size)
        case menuSceneString:
            scene = MenuScene(size: sendingScene.size)
    default:
        if general_debug == true { print("Default should not be reached. No Scene?") }
    }

    scene.scaleMode = SKSceneScaleMode.AspectFill
    sendingScene.view!.presentScene(scene, transition: transition)

}
所以这个func会被某个事件调用。例如,如果您触摸了游戏/应用程序中的一个按钮,则touchesEnded:功能将执行以下操作:

transitionToScene("optionsSceneString", sendingScene: self.scene)

希望这能有所帮助。祝你好运

我不确定这是否是您想要的,但这是我用于在场景之间转换的方法。我不使用Segues。我不知道为什么,除此之外,我从来没有费心去学习如何很好地使用它们来默认它们。我甚至很少使用故事板。下面的代码是如何从场景转换到另一个即时代码的示例。我通常有一个GlobalFunctions.swift文件,其中包含许多类共享的函数,在这样一个文件中应该包含以下内容:

func transitionToScene(node: String, sendingScene: SKScene) {

    //println("Entering transition to scene method with \(node) and \(sendingScene.name)")

    let transDur = 1.5
    let transition = SKTransition.fadeWithColor(sendingScene.backgroundColor, duration: transDur)

    var scene = SKScene()
    switch node {
        case splashSceneString:
            scene = SplashScene(size: sendingScene.size)
        case gameSceneString:
            scene = GameScene(size: sendingScene.size)
        case optionsSceneString:
            scene = OptionsScene(size: sendingScene.size)
        case menuSceneString:
            scene = MenuScene(size: sendingScene.size)
    default:
        if general_debug == true { print("Default should not be reached. No Scene?") }
    }

    scene.scaleMode = SKSceneScaleMode.AspectFill
    sendingScene.view!.presentScene(scene, transition: transition)

}
所以这个func会被某个事件调用。例如,如果您触摸了游戏/应用程序中的一个按钮,则touchesEnded:功能将执行以下操作:

transitionToScene("optionsSceneString", sendingScene: self.scene)
希望这能有所帮助。祝你好运