使用枚举遍历 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)
}

但永远不会两者兼而有之。