I'm trying to create a for loop but can't seem to understand how to get rid of this error
My code:
for i:CGFloat in 0 ..< 2 + self.frame.size.width / (movingGroundTexture.size().width) {
let sprite = SKSpriteNode(texture: movingGroundTexture)
sprite.zPosition = 0
sprite.anchorPoint = CGPointMake(0, 0)
sprite.position = CGPointMake(i * sprite.size.width, 0)
addChild(sprite)
}
The error is on for
line on self.frame.size.width
and (movingGroundTexture.aize().width)
You cannot create a CountableRange
(or CountableClosedRange
) with floating point types.
You either want to convert your 2 + self.frame.size.width / movingGroundTexture.size().width
to an Int
:
for i in 0 ..< Int(2 + self.frame.size.width / movingGroundTexture.size().width) {
// i is an Int
}
Or you want to use stride
(Swift 2 syntax):
for i in CGFloat(0).stride(to: 2 + self.frame.size.width / movingGroundTexture.size().width, by: 1) {
// i is a CGFloat
}
Swift 3 syntax:
for i in stride(from: 0, to: 2 + self.frame.size.width / movingGroundTexture.size().width, by: 1) {
// i is a CGFloat
}
Depends on whether you need floating point precision or not. Note that if your upper bound is a non-integral value, the stride
version will iterate one more time than the range operator version, due to the fact that Int(...)
will ignore the fractional component.
You have to convert the right side of the range to an integer type, like Int
or UInt
:
for i in 0 ..< Int(2 + self.frame.size.width / (movingGroundTexture.size().width)) {
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With