关于 Swift 3.0 和 for 循环的小语法问题
Minor Syntax issue regarding Swift 3.0 and a for loop
我最近刚刚将我的代码转换为 Swift 8 beta 附带的 Swift 3.0 语法。我 运行 进入了我需要更改的几行代码,以便代码使用最新的语法。我能够更正所有代码行 除 之外的所有错误,因为我使用 for 循环允许我的背景图像连续循环。
我得到的确切错误消息是:对成员'..<'的引用不明确
for i:CGFloat in 0 ..< 3 {
let background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * i), y: self.frame.midY)
background.size.height = self.frame.height
background.run(movingAndReplacingBackground)
self.addChild(background)
}
不要使用浮点类型作为循环索引
for i in 0 ..< 3 {
let background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * CGFloat(i)), y: self.frame.midY)
background.size.height = self.frame.height
background.run(movingAndReplacingBackground)
self.addChild(background)
}
试试这个:
for i in 0..<3{
let index = CGFloat(i)
//Your Code
let background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * index), y: self.frame.midY)
background.size.height = self.frame.height
background.run(movingAndReplacingBackground)
self.addChild(background)
}
问题是您正在对 Int
执行 for 循环,并且还将其指定为 CGFloat
。因此,这两种类型之间存在混淆。
我最近刚刚将我的代码转换为 Swift 8 beta 附带的 Swift 3.0 语法。我 运行 进入了我需要更改的几行代码,以便代码使用最新的语法。我能够更正所有代码行 除 之外的所有错误,因为我使用 for 循环允许我的背景图像连续循环。
我得到的确切错误消息是:对成员'..<'的引用不明确
for i:CGFloat in 0 ..< 3 {
let background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * i), y: self.frame.midY)
background.size.height = self.frame.height
background.run(movingAndReplacingBackground)
self.addChild(background)
}
不要使用浮点类型作为循环索引
for i in 0 ..< 3 {
let background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * CGFloat(i)), y: self.frame.midY)
background.size.height = self.frame.height
background.run(movingAndReplacingBackground)
self.addChild(background)
}
试试这个:
for i in 0..<3{
let index = CGFloat(i)
//Your Code
let background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * index), y: self.frame.midY)
background.size.height = self.frame.height
background.run(movingAndReplacingBackground)
self.addChild(background)
}
问题是您正在对 Int
执行 for 循环,并且还将其指定为 CGFloat
。因此,这两种类型之间存在混淆。