2016-10-17 3 views
1

Ich mache komplexe Schaltflächen mit verschiedenen Zuständen und Animationen zwischen Zuständen und Schleifen "attract" -Animationen. Aufgrund der Art der Schatten, Lichter, Leuchten und internen visuellen Änderungen sind die Schaltflächen ziemlich komplex.Subsklassing SKNode, oder SKSpriteNode für komplexe Schaltflächen

Jede Schaltfläche verfügt über mehrere SKSpriteNodes für Zeichnen und Animation, mehrere SKLabelNodes und mehrere SKEffectNodes sowie Aktionen, die auf der Grundlage des Eigenzustands und anderer Zustände zwischen Zuständen wechseln und Ereignisse auf sich selbst berühren.

Derzeit werden diese Schaltflächen aus einer SKSpriteNode-Unterklasse erstellt und instanziiert.

Aber es kommt mir vor, ich könnte dies "falsch" tun, und dass ich stattdessen ein SKNode Unterklasse sein sollte.

Was sind die Vor- und Nachteile der Stapelelemente in einer Unterklasse von SKNode vs SKSpriteNode in Situationen wie dem oben genannten?

Antwort

1

Nach mit SKNode Definition:

Die SKNode Klasse führt keine Zeichnung seiner eigenen.

ich ganz denken einig, dass es besser ist, SKSpriteNode als Unterklasse einer Taste zu verwenden, da es auch große Vorteile in den init Methoden der benutzerdefinierten Schaltfläche sein kann und dies bei der Erstellung eines Knopfes sehr komfortabel werden kann. ich einige Code schreiben, um ein Exempel zu statuieren:

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

ich keine Nachteile, weil SKSpriteNode direkt von SKNode erbt.

Auch gibt es keine Schwierigkeit, neue Elemente wie Kinder hinzufügen, wie SKLabelNode oder andere SKSpriteNode

Verwandte Themen