私は速やかに新しいです、そして、私は現在イニシャライザについて学んでいます。私は親クラスの初期化子をオーバーライドする問題に遭遇しています。私は特別なバッジクラスはすぐにスーパークラスのプロパティを初期化しようとしていますが、エラーが発生しました
呼び出されたときにコンパイルエラー
「スーパーのinitの前に、プロパティへのアクセス 『ImageTexture』の 『自己』の使用は自己初期化」私は慣れるために新しいイメージをご希望の取得 はこちらを呼び出す前に
self.imageTexture = SKTexture(imageNamed: "BadgeTeal")
:私はライン上に呼び出すとき、私は
class SpecialBadge: Badge {
enum BadgeAnimation: Int {
case GrowAndShrink = 0, Rotate, Shake
}
override init(requestType: UDRequestType) {
let animation = BadgeAnimation(rawValue: Int(arc4random_uniform(3)))
self.imageTexture = SKTexture(imageNamed: "BadgeTeal")
super.init(requestType: requestType)
switch animation! {
case .GrowAndShrink:
growShrink()
case .Rotate:
rotate()
case .Shake:
shake()
}
}
}
が、私はエラーを取得し、エラーを取得する特別なバッジのクラス
私の親クラス。
class Badge: SKSpriteNode {
var requestType: UDRequestType
var imageTexture: SKTexture?
init(requestType: UDRequestType) {
self.requestType = requestType
if let texture = imageTexture {
super.init(texture: texture, color: UIColor.clearColor(), size: CGSizeMake(48, 48))
} else {
let newTexture = SKTexture(imageNamed: "BadgeMagenta")
super.init(texture: newTexture, color: UIColor.clearColor(), size: CGSizeMake(48, 48))
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
私はそれがSpecialBadgeで初期化子を呼び出す前に別の画像を使用できるようにimageTextureを初期化する方法を見つけ出すことはできません、どんな手助けが大幅
'' let 'のバインディングは、 'imageTexture'にデフォルト値がないので常に失敗します。これは意図的ですか? – Alexander