2017-11-10 18 views
0

공의 노드 클래스를 만들려고합니다. 일부 물리학 몸체 속성을 가지고있는 공은 물리 구조체 속성을 초기화하는 함수를 만들었 기 때문에. 또한, 사용자가 편의 init을 통해 설정 한 ball radius (circleOfRadius를 통해)를 설정하기를 원합니다. 그 때문에 나는 반경 변수를 private로 설정했습니다. 문제는 내가 거기에 개인 var에 반경을 설정할 수 있습니다하지만 편의가 실행되지 않습니다. 나는 그하여 민간 반경 VAR을 취소하고 편리 초기화 내부의 물리학 바디 속성을 선언하지만, 올바른 경우 확실하지 메신저 해결할 수 있습니다 알고편의 초기화 (private)로 private var를 호출합니다.

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) 
     } 

: 여기 내 코드입니다. 한 가지 더, _R 코드를 확인할 때! 65 값을 얻지 만 편의상 초기화는 실행되지 않는다고 말했던 것처럼. 누군가 나를 도와 줄 수 있습니까?

답변

0

편의 초기화를 호출하지 않기 때문에 생각합니다. BallNode(radius:65.0)을 사용하면 호출되고 myRadius은 65.0으로 설정되지만 사용법은 사용자 편의를 위해 setPhysics()을 호출하지 않습니다.

+0

실제로 작동하지 않습니다. 실제로 여기 내 코드가 올바르지 않습니다. 당신이 말한대로해야합니다. 나는 고칠 것이다. – omerc