首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环CGFloat出错

for循环CGFloat出错
EN

Stack Overflow用户
提问于 2016-10-09 15:05:26
回答 1查看 774关注 0票数 0

我将一个项目从Swift 2转换到了Swift 3,现在我在下面的代码行中得到一个错误:

代码语言:javascript
复制
for i:CGFloat in 0 ..< 2.0 + self.frame.size.width / ( skyTexture.size().width * 2.0 ) += 1 {

上面写着:left side of mutating operator isn't mutable '..<' returns immutable value

代码语言:javascript
复制
let skyTexture = SKTexture(imageNamed: "sky")
    skyTexture.filteringMode = .nearest

    let moveSkySprite = SKAction.moveBy(x: -skyTexture.size().width * 2.0, y: 0, duration: TimeInterval(0.1 * skyTexture.size().width * 2.0))
    let resetSkySprite = SKAction.moveBy(x: skyTexture.size().width * 2.0, y: 0, duration: 0.0)
    let moveSkySpritesForever = SKAction.repeatForever(SKAction.sequence([moveSkySprite,resetSkySprite]))

    for i:CGFloat in 0 ..< 2.0 + self.frame.size.width / ( skyTexture.size().width * 2.0 ) += 1 {
        let sprite = SKSpriteNode(texture: skyTexture)
        sprite.setScale(2.0)
        sprite.zPosition = -20
        sprite.position = CGPoint(x: i * sprite.size.width, y: sprite.size.height / 2.0 + groundTexture.size().height * 2.0)
        sprite.run(moveSkySpritesForever)
        moving.addChild(sprite)
    }
EN

回答 1

Stack Overflow用户

发布于 2016-10-09 16:40:49

本质上,你想要的仍然是一次循环遍历递增1的整数值。因此,你可以只计算最后一个int值,并使用一个简单的for each循环:

代码语言:javascript
复制
for i in 0..<Int(self.frame.size.width / ( skyTexture.size().width * 2.0 )) + 2 {
    //do your stuff here
    sprite.position = CGPoint(x: CGFloat(i) * sprite.size.width, y: sprite.size.height / 2.0 + groundTexture.size().height * 2.0)
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39940937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档