2016-10-17 5 views
1

상태 사이에 다양한 상태 및 애니메이션을 가진 복잡한 버튼을 만들고 애니메이션을 "끌어 당기는"반복적 인 작업을하고 있습니다. 그림자, 하이라이트, 광선 및 내부 시각적 변화의 특성으로 버튼이 매우 복잡합니다.복잡한 버튼에 대한 SKNode 또는 SKSpriteNode 서브 클래 싱

각 버튼에는 그리기 및 애니메이션을위한 여러 개의 SKSpriteNodes, 여러 개의 SKLabelNodes 및 여러 개의 SKEffectNodes가 있으며, 자기 자신과 다른 사람의 상태를 기반으로 상태간에 전환되는 동작과 자체의 터치 이벤트가 있습니다.

현재이 버튼은 SKSpriteNode 하위 클래스에서 만들어지고 인스턴스화됩니다.

그러나 나는 이것이 "잘못"하고있을 수 있으며, 대신 SKNode를 서브 클래 싱해야한다고 생각합니다.

위와 같은 상황에서 SKNode와 SKSpriteNode의 하위 클래스에 요소를 겹쳐 쌓는 장점과 단점은 무엇입니까? SKNode 정의에 따르면

답변

1

:

SKNode 클래스는 자신의 드로잉을 수행하지 않습니다.

나는 확실히 거기 또한 사용자 정의 버튼의 초기화 방법에 큰 장점이 될 수 있으며,이 버튼을 만드는 동안 매우 편안하게 될 수 있기 때문에 버튼의 서브 클래스로 SKSpriteNode을 사용하는 것이 더 좋다고 생각한다에 동의

. 내가 예를 만들기 위해 몇 가지 코드를 작성 : SKSpriteNodeSKNode에서 직접 상속 때문에

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

로서, 자녀로서 새로운 요소를 추가하는 어려움이 없다