This is my current code for the progress bar. In the GameScene I have set the var xProgress = 1. Shouldn't the empty image appear as the value should now = 0?
I'm trying to test the SKNode before making it the value decrease over time so it reduces slowly.
class IMProgressBar : SKNode{
var emptySprite : SKSpriteNode? = nil
var progressBar : SKCropNode
init(emptyImageName: String!,filledImageName : String)
{
progressBar = SKCropNode()
super.init()
let filledImage = SKSpriteNode(imageNamed: filledImageName)
progressBar.addChild(filledImage)
progressBar.maskNode = SKSpriteNode(color: UIColor.white,
size: CGSize(width: filledImage.size.width * 2, height: filledImage.size.height * 2))
progressBar.maskNode?.position = CGPoint(x: -filledImage.size.width / 2,y: -filledImage.size.height / 2)
progressBar.zPosition = 0.1
self.addChild(progressBar)
if emptyImageName != nil{
emptySprite = SKSpriteNode.init(imageNamed: emptyImageName)
self.addChild(emptySprite!)
}
}
func setXProgress(xProgress : CGFloat){
var value = xProgress
if xProgress < 0.1{
value = 0
}
if xProgress > 0.1 {
value = 0
}
progressBar.maskNode?.xScale = value
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
In my GameScene I also have:
let progressBar = IMProgressBar(emptyImageName: nil,filledImageName: "health")
progressBar.position = CGPoint(x: self.frame.midX, y: self.frame.height / 3)
self.addChild(progressBar)