迅捷 2.0 错误



我正在尝试使用以下代码:

func redrawShape(shape: Shape, completion:() -> ()) {
    for (idx, block) in shape.blocks.enumerate() {
        let sprite = block.sprite!
        let moveTo = pointForColumn(block.column, row: block.row)
        let moveToAction: SKAction = SKAction.moveTo(moveTo, duration: 0.05)
        moveToAction.timingMode = .EaseOut
        sprite.runAction(moveToAction, completion: nil)
}

我在这一行收到一个错误:

sprite.runAction(moveToAction, completion: nil)

错误说:

无法使用类型为"(SKAction, completion: nil)"的参数列表调用"runAction"

我不明白如何解决这个问题。

您调用了错误的方法。如果没有完成处理程序,则不要调用 runAction(_:completion:) 。调用简单runAction(_:),像这样:

 sprite.runAction(moveToAction)

换句话说,您有两个选择:

    如果没有
  • 完成处理程序,则可以调用runAction(_:),或者

  • 如果您有完成处理程序,则可以调用runAction(_:completion:)

但是,如果您没有完成处理程序,则无法调用runAction(_:completion:) - 就像您尝试的那样。

完成处理程序不是可选的。你需要传递一些东西。您可以传递一个空的闭包:

sprite.runAction(moveToAction, completion: {})

或者,正如 matt 指出的那样,更好的方法是使用另一种形式:

sprite.runAction(moveToAction)

马特的答案确实是更好的。

相关内容

  • 没有找到相关文章

最新更新