几年前,我在Swift 2.0中开发了一个应用程序,运行平稳。今天,我将代码更新为3.0(后来又更新为4.0),但是我遇到一个问题,说“变异运算符的左面不是可变的'.. <'返回不可变值”,我似乎无法解决。>
This answer从“ + =”中删除“ =”对我不起作用,希望有人可以帮助我解决此问题。
for i: CGFloat in 0 ..< self.frame.size.width / (groundTexture.size().width) += 1 {
完整代码如下:
func moveGroundFunc(_ duration: TimeInterval, piece: SKSpriteNode) {
let groundMovingLeft = SKAction.moveBy(x: groundTexture.size().width, y: 0, duration: duration)
let resetGround = SKAction.moveBy(x: -groundTexture.size().width, y: 0, duration: 0)
let groundMovingLeftForever = SKAction.repeatForever(SKAction.sequence([groundMovingLeft, resetGround]))
for i: CGFloat in 0 ..< self.frame.size.width / (groundTexture.size().width) += 1 {
piece.size = CGSize(width: 1500, height: groundPiece.size.height)
piece.position = CGPoint(x: i * piece.size.width, y: piece.size.height - 75)
}
答案 0 :(得分:3)
您的代码正在尝试对表达式的结果进行突变(使用app.exec()
);这是不可能的,因为匿名结果是常量,因此是不可变的。
我不确定为什么将+= 1
更改为+= 1
无效,但是您可以将其分为两行。如果将范围运算符从+1
更改为..<
,则也可以摆脱...
。
另一个问题是您不能将范围与+1
一起使用-您需要使用实现CGFloat
的类型。整数除法可能不会给您相同的结果。如果没有,则可以将循环更改为使用增量而不是范围。
SignedInteger