Jay23
Jay23

Reputation: 57

I want to change the image of the button as long as user taps on the button?

I want change the image of a button as long as the user taps on it, but change the image back to the original if he releases his finger from the screen(I´m using Sprite-Kit)

My code:

var SettingButton = SKSpriteNode(imageNamed: "SettingButton1.0")

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {    
    for touch in touches{
        let locationUser = touch.location(in: self)

        if atPoint(locationUser) == SettingButton{
            let SettingButton = SKSpriteNode(imageNamed: "SettingButton2.0") //change the image
        }
    }
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches{ 
        let locationUser = touch.location(in: self)

        if atPoint(locationUser) == SettingButton{
            //change image back to original
        }
    }
}

Upvotes: 1

Views: 47

Answers (1)

Ron Myschuk
Ron Myschuk

Reputation: 6061

Try swapping the texture of the SpriteNode

var buttonTextureUp = SKTexture(imageNamed: "SettingButton1.0")
var buttonTextureDown = SKTexture(imageNamed: "SettingButton2.0")

var settingButton = SKSpriteNode(texture: buttonTextureUp)

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {    
    for touch in touches{
        let locationUser = touch.location(in: self)

        if atPoint(locationUser) == settingButton {
            settingButton.texture = buttonTextureDown //change the image
        }
    }
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

    for touch in touches{ 
        let locationUser = touch.location(in: self)

        if atPoint(locationUser) == settingButton{
            settingButton.texture = buttonTextureUp //change image back to original
        }
    }
}

Upvotes: 2

Related Questions