Ios 如何使用精灵套件和swift 2更改按下按钮时的场景
我是swift新手,在阅读本教程后,我尝试添加一些额外的功能。我想做的是结合数字宠物的元素,比如iOS游戏“最好的朋友”。首先,我添加了一个主场景()和几个按钮,当按下按钮时,场景会改变。下面是我用来实现它的代码。 MainSceneControl.swift: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
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)
希望这能有所帮助。祝你好运