2016-10-17 6 views
1

Я делаю сложные кнопки с различными состояниями и анимациями между состояниями и зацикливая анимацию «привлечь». Из-за природы теней, бликов, свечения и внутренних визуальных изменений кнопки довольно сложны.Подкласс SKNode, или SKSpriteNode для сложных кнопок

Каждая кнопка имеет несколько SKSpriteNodes для рисования и анимации, несколько SKLabelNodes и несколько SKEffectNodes, а также действия, перемещающиеся между состояниями, основанными на состоянии self и других, и касание событий на себе.

В настоящее время эти кнопки построены и созданы из подкласса SKSpriteNode.

Но мне кажется, что я делаю это «неправильно» и что вместо этого я должен подклассифицировать SKNode.

Каковы преимущества и недостатки укладки элементов в подкласс SKNode vs SKSpriteNode в ситуациях, подобных приведенным выше?

ответ

1

Согласно с SKNode определения:

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

Я не вижу никаких недостатков, поскольку SKSpriteNode наследует непосредственно от SKNode.

Также нет никаких трудностей, чтобы добавить новые элементы, как дети, так как SKLabelNode или другие SKSpriteNode