2017-03-12 1 views
0

Beim Versuch, ein Spiel mit Sprite-Kit zu entwickeln, habe ich festgestellt, dass es einfacher wäre, eine separate Klasse für ein Spielobjekt als Laser von einem Schiff zu erstellen. Innerhalb dieser Klasse hätte ich einige Funktionen, wie zum Beispiel Aktualisieren, Schießen usw. Aber jedes Mal, wenn ich eine andere Klasse erstelle, wird keine der Variablen, die ich mache, "deklariert". Dies ist mein CodeSprite Kit Erstellen einer separaten Klasse

import UIKit 
import SpriteKit 

class laser: SKSpriteNode { 

let laser : SKSpriteNode = SKSpriteNode(imageNamed:"playerShip") 
laser.position = CGPoint(x: 100, y: 200)//This is where it says no declaration 


} 

enter image description here

Antwort

2

Dies liegt daran, dass Sie die Klasse initiieren müssen.

In Ihrem Beispiel müssten Sie folgendes tun, die Sie einen Laser wie diese laser()

class laser: SKSpriteNode { 
    let laser: SKSpriteNode = SKSpriteNode(imageNamed: "playerShip") 

    init() { 
     super.init(texture: nil, color: .clear, size: laser.size) 
     laser.position = CGPoint(x: 100, y: 200) 
    } 

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

instanziiert erlauben würde, aber wahrscheinlich das wirklich wollte, mit dem Sie einen Laser wie diese let aLaser = laser("playerShip") instanziiert ermöglicht. Dann können Sie die Position wie folgt ändern alaser.position = CGPoint(x: 100, y: 200).

Mit dieser Methode können Sie das Sprite und die Position für verschiedene Laser einfach ändern. Es sei denn, dein Spiel hat nur einen Laser.

class laser: SKSpriteNode { 

    init(_ imageName: String) { 
     let texture: SKTexture = SKTexture(imageNamed: imageName) 

     super.init(texture: texture, color: .clear, size: texture.size()) 
    } 

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

}