2017-03-20 10 views
1

이 초기화는 SKShapeNode을위한 설계된 초기화가 아니며, 그것에 대해 조사했지만이 망할 원을 만드는 정확한 방법을 찾을 수 없었습니다.상속 SKShapeNode

답변

2

SKShapeNode.init(circleOfRadius:)SKShapeNode의 편리한 초기화 프로그램이므로 Swift 이니셜 라이저에서 호출 할 수 없습니다. Swift는 ObjectiveC보다 엄격하게 지정된 이니셜 라이저 패턴을 적용합니다. 불행하게도

, SKShapeNode의 지정된 초기화 단지 init입니다 나타납니다, 그래서 당신은 이런 일을 수행해야합니다 :

위의 코드는 애플이 제공하는 API 제공 SKShapeNode를 서브 클래스에 대한 작동하지만
public class Player: SKShapeNode { 
    public var playerName : String 
    private var inventory: [enumObject] 

    init(nameOfPlayer:String, position:CGPoint, radius: CGFloat) { 
     playerName = nameOfPlayer 
     inventory = [enumObject]() 

     super.init() 

     self.path = CGPath(ellipseIn: CGRect(origin: .zero, size: CGSize(width: radius, height: radius)), transform: nil) 

     self.position = position 
     self.fillColor = SKColor.white 
    } 

    // init?(coder:) is the other designated initializer that we have to support 
    public required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 

앞으로 코드를 변경해야하는 경우를 고려하여 SKShapeNode을 포함하는 SKNode 하위 클래스를 만드는 것이 더 합리적 일 수 있습니다. 이 설정에서 플레이어를 단순한 원 이상으로 나타내려면 플레이어 노드에 노드를 추가하기 만하면됩니다.