0
SKYapeNodeのサブクラスを取得して初期化子を受け入れることができません。この問題を回避するために、ここに投稿された例を試してみました。Adding Convenience Initializers in Swift Subclass私が使用しているコードは以下の通りです。スウィフトSKShapeNodeは初期化子を受け付けません
class Ground1 : SKShapeNode {
override init() {
super.init()
print("Hello1")
}
convenience init(width: CGFloat, point: CGPoint) {
var points = [CGPoint(x: -900, y: -300),
CGPoint(x: -600, y: -100),
CGPoint(x: -100, y: -300),
CGPoint(x: 2, y: 150),
CGPoint(x: 100, y: -300),
CGPoint(x: 600, y: -100),
CGPoint(x: 900, y: -300)]
self.init(splinePoints: &points, count: points.count)
lineWidth = 5
strokeColor = UIColor.orange
physicsBody = SKPhysicsBody(edgeChainFrom: path!)
physicsBody?.restitution = 0.75
physicsBody?.isDynamic = false
print("Hello2")
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
コンビニエンスINITを(初期化)無視され、使用されません。シーンにシェイプが追加されなくなりました。私は間違って何をしていますか?
地面を追加するためにどのようなコードを使用しましたか? – Sweeper
私はgameSceneのインスタンスを作成して、ground = ground1()とし、インスタンスをシーンに追加します。 Addchild(gound)。私はコンソールでprint hello1を取得しますが、印刷はしません。hello2 – hoboBob
これを 'let ground = Ground1(width:10、point:CGPoint.zero)'と 'addChild(ground)'にしてみてください。 'override init(){...}'と ''必要なinit {...} 'を削除することができます。 – 0x141E