【发布时间】:2018-09-26 12:06:38
【问题描述】:
我正在开发一款 SpriteKit 游戏,起初我在 GameplayScene 中放置了 4 个 UIButton,但后来我决定创建单独的按钮作为 SKSpriteNode,以编程方式制作,并使用一个类(按钮类:SKSpriteNode)。 我希望我的按钮在按下时会褪色和缩放一点,然后恢复到原始状态。 按钮淡出并缩小,但它们保持在那个状态,不会回到正常状态。 我的代码有什么问题?
导入 SpriteKit
protocol ButtonDelegate: NSObjectProtocol { func buttonClicked(发送者:按钮) }
类按钮: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!")
}
}
【问题讨论】:
标签: ios swift sprite-kit