使用枚举遍历 CGPoint 数组以创建多个精灵
Using enumerate to iterate over a CGPoint array to create multiple sprites
我正在尝试遍历位置数组以创建一堆精灵节点。但是我在第二行收到错误 “[CGPoint]”类型的值没有成员 'enumerate'。我做错了什么?
func createEnemy1() {
let positions = [CGPoint(x: 50, y: 30), CGPoint(x: 30, y: 20)]
positions.enumerate().forEach { (index, point) in
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
}
你可以使用这个语法是:
func createEnemy1() {
let positions = [CGPoint(x: 50, y: 30), CGPoint(x: 30, y: 20)]
for (index, point) in positions.enumerated() {
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
}
或
func createEnemy2() {
let positions = [CGPoint(x: 50, y: 30), CGPoint(x: 30, y: 20)]
positions.enumerated().forEach{ index, point in
createAt(point: point, index: index)
}
}
func createAt(point: CGPoint, index: Int) {
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
错误表示 API 拼写错误。
除此之外,您正在混合两种不同的形式
可以是forEach
positions.forEach { (index, point) in
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
或 for
循环 enumerated()
for (index, point) in positions.enumerated() {
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
但永远不会两者兼而有之。
我正在尝试遍历位置数组以创建一堆精灵节点。但是我在第二行收到错误 “[CGPoint]”类型的值没有成员 'enumerate'。我做错了什么?
func createEnemy1() {
let positions = [CGPoint(x: 50, y: 30), CGPoint(x: 30, y: 20)]
positions.enumerate().forEach { (index, point) in
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
}
你可以使用这个语法是:
func createEnemy1() {
let positions = [CGPoint(x: 50, y: 30), CGPoint(x: 30, y: 20)]
for (index, point) in positions.enumerated() {
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
}
或
func createEnemy2() {
let positions = [CGPoint(x: 50, y: 30), CGPoint(x: 30, y: 20)]
positions.enumerated().forEach{ index, point in
createAt(point: point, index: index)
}
}
func createAt(point: CGPoint, index: Int) {
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
错误表示 API 拼写错误。
除此之外,您正在混合两种不同的形式
可以是forEach
positions.forEach { (index, point) in
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
或 for
循环 enumerated()
for (index, point) in positions.enumerated() {
let spriteNode = SKNode()
spriteNode.position = point
let sprite = SKSpriteNode(imageNamed: "enemy")
sprite.zPosition = 3.0
sprite.name = "enemy\(index + 1)"
spriteNode.addChild(sprite)
}
但永远不会两者兼而有之。