Hi,
Like UIButtons we don’t have IBActions for SKSpriteNode and what if we have to trigger the click event on SpriteNodes. Solution comes here by handling touch methods provided by UIResponder class.
Start by creating a subclass of SpriteNode(using SKSpriteNode here) and add touchesBegan and touchesEnded method.
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// Do your stuff here.
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
completionHandler(self)
// Do your stuff here.
}
Once you are done with above step create a call back or protocol to handle the touch/click event(s).
var completionHandler = {(object : TDAnimatedSpriteButton)->Void in
}
// we are using closure here.
From now, start using this subclass where you want to have handle the click events for Sprites, with the help of closure/callback you can easily catch whenever a SKSpriteNode is touched.
Code Snippet:
class TDAnimatedSpriteButton: SKSpriteNode {
var completionHandler = {(object : TDAnimatedSpriteButton)->Void in
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// Do your stuff here.
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
completionHandler(self)
// Do your stuff here.
}
}
0 Comment(s)