我想在场景中保留一个指向我的GameViewController的指针,以便能够在场景之间进行转换。我来自C ++,这是一个我很难在swift中理解的话题。怎么办呢?
这就是我正在尝试的:
class SplashScene: SKScene
{
var view = SKView()
override func didMoveToView(view: SKView) {
self.view = &view
NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("transitionToGameScene"), userInfo: nil, repeats: false)
}
func transitionToGameScene() {
let scene = GameScene()
view.ignoresSiblingOrder = true
view.presentScene(scene, transition: SKTransition.crossFadeWithDuration(1))
}
}
答案 0 :(得分:1)
SKScene
已经有view
属性,其中包含SKView
,因此,对于您的问题的这一部分,只需使用已存在的属性:
class SplashScene: SKScene
{
override func didMoveToView(view: SKView) {
NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("transitionToGameScene"), userInfo: nil, repeats: false)
}
func transitionToGameScene() {
let scene = GameScene()
view.ignoresSiblingOrder = true
view.presentScene(scene, transition: SKTransition.crossFadeWithDuration(1))
}
}
至于你关于指针的问题:Swift并没有真正拥有它们,至少没有指向c ++存储位置的指针。您可以执行原始代码尝试执行的操作,但不要使用&
运算符; Swift将在内部存储对象实例的引用(类似于c ++指针,但不是你可以直接搞乱的东西)。
虽然struct
s vs class
es,但您必须要小心。 Swift将存储对class
个实例的引用,但是对于structs
,它实际上会复制整个数据结构,而不是存储对它的引用。请参阅"Structures and Enumerations Are Value Types"中的"Classes Are Reference Types"和Swift language reference。
此外,在Swift中不时使用&
运算符 。它的主要用途是In-Out Parameters。你可以用与c ++相同的方式来思考它。