Я пытаюсь установить значения property
в моем проекте SpriteKit
, используя constructor
(init
). Поскольку swift
не наследует init
methods
, это не всегда так просто, как просто добавить чистый метод init()
и взять его оттуда. Мой проект требует, чтобы я включил оба метода init(size)
и init(coder)
. Хорошо.
Однако это также означает, что мне нужно ввести мой properties
обоими init
методами. Мне это кажется немного излишним, но compiler
заставляет меня это делать. Итак, мой вопрос, это способ сделать это, или есть более чистый способ, поэтому мне не нужно использовать два init
methods
, которые устанавливают одинаковые значения property
? Вот как выглядит код:
class GameScene: SKScene {
let myVariable: SKShapeNode
override init(size: CGSize) {
myVariable = SKShapeNode(rectOf: CGSize(width: 200, height: 200))
super.init(size: size)
}
required init?(coder aDecoder: NSCoder) {
myVariable = SKShapeNode(rectOf: CGSize(width: 200, height: 200))
super.init(coder: aDecoder)
}
}
... и класс, вызывающий GameScene
:
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
let scene = GameScene(size: view.frame.size)
scene.scaleMode = .aspectFill
scene.size = view.frame.size
scene.anchorPoint = CGPoint(x:0 , y: 1)
view.presentScene(scene)
}