0
我試圖創建一個球的節點類。球應該有一些物理屬性 - 因爲我創建了一個函數來初始化物理屬性。另外,我希望用戶可以設置通過便捷初始化設置的球半徑(通過circleOfRadius)。因爲這個,我將radius設置爲私有。問題是我可以將radius設置爲private var,但不能執行便利性。 這裏是我的代碼:invoke private var to convenience init(swift)
class BallNode: SKShapeNode {
var radius:CGFloat = 0
private var _R:CGFloat?
override init() {
super.init()
self.setPhysics()
}
var newBallR:CGFloat{
get {
return _R!
}
set {
_R = newValue
self.radius = _R!
print("bsllRRRR:", self.radius)
}
}
convenience init(radius:CGFloat){
self.init(circleOfRadius: radius)
self.radius = radius
print("successful init circle radius", self.radius)
}
func setPhysics() {
self.physicsBody = SKPhysicsBody.init(circleOfRadius: self.radius)
print("physics body is SET with value:", self.radius)
self.physicsBody?.affectedByGravity = true
print("gravity = T")
self.physicsBody?.restitution = 0.2
print("res = 0.2")
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch: AnyObject in touches {
let positionOfTouch = touch.location(in: self)
let ball = BallNode(radius:65)
}
我知道我可以解決,通過取消私人半徑var和申報便利的init裏面的物理身體屬性,但林不知道,如果它的正確。 還有一件事,當我檢查代碼_R!獲得65值,但正如我所說的便利init不執行。 有人可以幫助我嗎?
不工作,其實我這裏的代碼是不正確的。它應該如你所說。我會修好它。 – omerc