         _ = self.text
         configure(text: text, image: image, color: color)
     }
-    
+
+    public convenience init(text: String?, image: UIImage?, color: UIColor, radius: CGFloat, selectedScale: CGFloat, ordinaryScale: CGFloat, selectedDuration: Double, unselectedDuration: Double) {
+        self.init(text: text, image: image, color: color, radius: radius)
+        self.selectedScale = selectedScale
+        self.ordinaryScale = ordinaryScale
+        self.selectedDuration = selectedDuration
+        self.unselectedDuration = unselectedDuration
+    }
+
     open func configure(text: String?, image: UIImage?, color: UIColor) {
         self.text = text
         self.image = image

        didSet {
            guard selected != oldValue else { return }
            if selected {
                run(.scale(to: 4/3, duration: 0.2))
                sprite.run(SKAction.setTexture(texture))
            } else {
                run(.scale(to: 1, duration: 0.2))
                sprite.texture = nil
            }
        }


open class Node: SKShapeNode {
    
    var selectedScale: CGFloat = 4/3
    var ordinaryScale: CGFloat = 1.0
    var selectedDuration: Double = 1.2
    var unselectedDuration: Double = 0.2

    lazy var mask: SKCropNode = { [unowned self] in
        let node = SKCropNode()
        node.maskNode = {
