Swift Spritekit Adding Button programmatically

后端 未结 5 685
独厮守ぢ
独厮守ぢ 2020-12-01 11:46

How do I programmatically add a button that will run an action when it\'s clicked? What code would be used?

I am used to just adding a button in the storyboard and r

5条回答
  •  醉话见心
    2020-12-01 12:03

    Adding a button in SpriteKit and responding to taps on it is not quite as easy as it is in UIKit. You basically need to create an SKNode of some sort which will draw your button and then check to see if touches registered in your scene are within that node's bounds.

    A really simple scene with just a single red rectangle in the center acting as a button would look something like this:

    import UIKit
    import SpriteKit
    class ButtonTestScene: SKScene {
        var button: SKNode! = nil
        override func didMove(to view: SKView) {
            // Create a simple red rectangle that's 100x44
            button = SKSpriteNode(color: .red, size: CGSize(width: 100, height: 44))
            // Put it in the center of the scene
            button.position = CGPoint(x:self.frame.midX, y:self.frame.midY);
            self.addChild(button)
        }
        override func touchesEnded(_ touches: Set, with event: UIEvent?) {
            // Loop over all the touches in this event
            for touch in touches {
                // Get the location of the touch in this scene
                let location = touch.location(in: self)
                // Check if the location of the touch is within the button's bounds
                if button.contains(location) {
                    print("tapped!")
                }
            }
        }
    }
    

    If you need a button that looks and animates like the ones in UIKit, you'll need to implement that yourself; there's nothing built in to SpriteKit.

提交回复
热议问题