大多數我寫到目前爲止只是有幾個對象,所以我把所有的遊戲邏輯在GameScene的SpriteKit代碼。現在我正在處理更復雜的事情,我正試圖將一些對象分離到自己的類中。我怎麼能初始化以下Orbita
類以便simpleDescription
字符串用於在GameScene
的SKSpriteNode
的ImageName
?與圖片名稱屬性枚舉值初始化spritekit對象
class Orbita {
var orbita : SKSpriteNode
init(orbita: SKSpriteNode) {
self.orbita = orbita
physics()
}
func physics () {
orbita.physicsBody = SKPhysicsBody(circleOfRadius: orbita.frame.size.width/2)
orbita.physicsBody?.friction = 0
orbita.physicsBody?.restitution = 1
orbita.physicsBody?.linearDamping = 0
orbita.physicsBody?.angularDamping = 0
orbita.physicsBody?.allowsRotation = false
orbita.physicsBody?.applyImpulse(CGVectorMake(4, -4))
}
enum OrbitaType: Int {
case firstPlanet = 0, secondPlanet, thirdPlanet
func simpleDescription()->String {
switch self {
case .firstPlanet:
return "green"
case .secondPlanet:
return "red"
case .thirdPlanet:
return "yellow"
}
}
}}
UPDATE
這是我已經能夠到目前爲止做的。我決定把我加了一些變化
class Orbita {
var sprite : SKSpriteNode
var orbitaType : OrbitaType
init(orbita: SKSpriteNode) {
self.orbita = orbita
physics()
}
init(orbitaType: OrbitaType, gameScene: GameScene) {
self.orbitaType = orbitaType
sprite = SKSpriteNode(imageNamed: orbitaType.simpleDescription())
sprite.name = orbitaCategoryName
sprite.position = CGPointMake(3*gameScene.frame.size.width/4, 3*gameScene.frame.size.height/4)
sprite.zPosition = 10
gameScene.addChild(sprite)
physics()
}
func physics () {
sprite.physicsBody = SKPhysicsBody(circleOfRadius: sprite.frame.size.width/2)
sprite.physicsBody?.friction = 0
sprite.physicsBody?.restitution = 1
sprite.physicsBody?.linearDamping = 0
sprite.physicsBody?.angularDamping = 0
sprite.physicsBody?.allowsRotation = false
sprite.physicsBody?.applyImpulse(CGVectorMake(4, -4))
}
enum OrbitaType: Int {
case firstPlanet = 0, secondPlanet, thirdPlanet
func simpleDescription()->String {
switch self {
case .firstPlanet:
return "green"
case .secondPlanet:
return "red"
case .thirdPlanet:
return "yellow"
}
}
}}
在GameScene
類的以下:
var newOrbita = Orbita(orbitaType: 0, gameScene: self)
但我不斷收到以下錯誤:
Cannot invoke initializer for type 'Orbita' with an argument list of type '(orbitaType: Int, gameScene: GameScene)'
另外,如何能我想補充newOrbita
爲GameScene
類變量,因爲我使用GameScene
作爲參數?
你的錯誤屬於'Ball',但在代碼中沒有球的提及。 – jtbandes
比較遺憾的是,我得到了一些評論的東西混合的代碼,我只是做了修正。我仍然得到同樣的錯誤 – NSologistic