Я работаю над игрой SpriteKit и сначала я поместил 4 UIButton в свой GameplayScene, но затем я решил создать отдельные кнопки как SKSpriteNode, программно созданный, и использовать класс (класс Button: SKSpriteNode).Я хочу, чтобы при нажатии мои кнопки немного исчезали и масштабировались, а затем возвращались в исходное состояние.Кнопки исчезают и уменьшаются, но они остаются в этом состоянии, не возвращаются в нормальное состояние.Что не так с моим кодом?
импорт SpriteKit
протокол ButtonDelegate: NSObjectProtocol {func buttonClicked (sender: Button)}
class Button: SKSpriteNode {
weak var delegate: ButtonDelegate!
var buttonTexture = SKTexture()
init(name: String) {
buttonTexture = SKTexture(imageNamed: name)
super.init(texture: buttonTexture, color: .clear, size: buttonTexture.size())
self.isUserInteractionEnabled = true
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var touchBeganCallback: (() -> Void)?
var touchEndedCallback: (() -> Void)?
weak var currentTouch: UITouch?
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
touchBeganCallback?()
if isUserInteractionEnabled {
setScale(0.9)
self.alpha = 0.5
if let currentTouch = touches.first {
let touchLocation = currentTouch.location(in: self)
for node in self.nodes(at: touchLocation) {
delegate?.buttonClicked(sender: self)
}
}
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
setScale(1.0)
self.alpha = 1.0
touchEndedCallback?()
print("tapped!")
}
}