2016-10-17 3 views
1

私は状態間のさまざまな状態とアニメーションを持つ複雑なボタンを作成しており、アニメーションをループしています。シャドウ、ハイライト、グロー、内部の視覚的変化の性質上、ボタンはかなり複雑です。複雑なボタンのSKNode、SKSpriteNodeのサブクラス

各ボタンには、描画とアニメーション用の複数のSKSpriteNode、複数のSKLabelNodesと複数のSKEffectNodes、および自己と他者の状態に基づいて状態間で遷移するアクションと、自己上のタッチイベントがあります。

現在、これらのボタンは、SKSpriteNodeサブクラスから構築され、インスタンス化されています。

しかし、私はこの「間違った」ことをしている可能性があり、代わりにSKNodeをサブクラス化する必要があります。

上記のような状況でSKNodeとSKSpriteNodeのサブクラスに要素を積み重ねる利点と欠点は何ですか? SKNode定義によると

答えて

1

SKNodeクラスは、独自の任意の描画を行いません。

私はかなりそれがまた、カスタムボタンの初期化方法には大きな利点があることができ、これは、ボタンの作成中に、非常に快適になることができますので、ボタンのサブクラスとしてSKSpriteNode使用することをお勧めだと思うことに同意します。 私は例を作るために、いくつかのコードを記述します。SKNodeから直接SKSpriteNode継承するため

class CoolButton: SKSpriteNode { 

    var isEnabled: Bool = true { 
     didSet { 
      if (disabledTexture != nil) { 
       texture = isEnabled ? defaultTexture : disabledTexture 
      } 
     } 
    } 
    var isSelected: Bool = false { 
     didSet { 
      texture = isSelected ? selectedTexture : defaultTexture 
     } 
    } 

    init(normalTexture defaultTexture: SKTexture!, selectedTexture:SKTexture!, disabledTexture: SKTexture?, size:CGSize) { 
     ... 
     super.init(texture: defaultTexture, color: UIColor.white, size: size) 
     ... 
    } 
    ... 
} 

は、私は何の欠点を見ません。

SKLabelNodeまたは他のSKSpriteNode

として、子として新しい要素を追加する難しさはありません
関連する問題