2015-07-06 27 views
0

我一直有访问其他类的变量的问题。这是我的代码。 这是我正在尝试访问变量“lastSelection”的类,它也是第一个要求查看的SKScene。如何访问Swift中另一个SKScene的变量SpriteKit

class FighterPlaneselect : SKScene { 
    var lastSelection:String = "" 

    override func didMoveToView(view: SKView) { 
     if(true) { 
      lastSelection = "Mustang" 
     } 
    } 
} 
//Here is the second class called "GameField" 
class GameField : SKScene { 
    var FighterPlane : FighterPlaneSelect! 
    override func didMoveToView(view: SKView) { 
     FighterPlane = FighterPlaneSelect() 
     print(FighterPlane.lastSelection) 
    } 
} 

每当它打印出来它打印“”。它应该印刷“野马”。

回答

0

在此行中:

FighterPlane = FighterPlaneSelect()

您实例化类的 SKScene。问题是,它永远不会显示,所以方法:func didMoveToView(view: SKView)永远不会被调用。

你需要的是对其他场景的引用。

一种可能性是做到以下几点:

class FighterPlaneSelect : SKScene { 
var lastSelection:String = "" 

override func didMoveToView(view: SKView) { 
     if(true) { 
      lastSelection = "Mustang" 
     } 
    } 
} 

//Here is the second class called "GameField" 
class GameField : SKScene { 
    var fighterPlane : FighterPlaneSelect! 
    override func didMoveToView(view: SKView) { 
     print(FighterPlane.lastSelection) 
    } 
} 

//Here is in the GameScene 
let fighterPlaneSelect = FighterPlaneSelect 
//show the scene to make it move to view 
//then assign the variable inside the gameField object 
let gameField = GameField() 
gameField.fighterPlane = fighterPlaneSelect 
+0

的FighterPlaneSelect视图首先被调用,则GameField视图 –

+0

从哪个类被称为它们? – Tokuriku

+0

这实际上并不是我的完整代码,因为我不想展示它。 FighterPlaneSelect类是有史以来的第一个视图。它被称为GameScene,但我想出了如何改变它。所以这是默认视图 –

0

可以初始化变量在现场的init方法:

class FighterPlaneselect : SKScene { 
    var lastSelection:String = "" 

    override init(size: CGSize){ 

     super.init(size: size) 

     lastSelection = "Mustang" 

    } 

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

    override func didMoveToView(view: SKView) { 

    } 
} 

,然后只用它为你做的已经:

class GameField : SKScene { 
    var FighterPlane : FighterPlaneselect! 

    override func didMoveToView(view: SKView) { 


     FighterPlane = FighterPlaneselect(size: self.size) 

     println(FighterPlane.lastSelection) 
    } 
} 
0

非常简单!只需在课堂外声明lastSelection!

class FighterPlaneselect : SKScene { 
var lastSelection:String = "" //Declared in the class 
} 

var lastSelection:String = "" //Declared outside the class 
class FighterPlaneselect : SKScene { 

} 
相关问题