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,完成:nil)”的参数列表调用“runAction”

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

4

2 回答 2

2

您正在调用错误的方法。如果您没有完成处理程序,则不要调用runAction(_:completion:). 调用 simple runAction(_:),如下所示:

 sprite.runAction(moveToAction)

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

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

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

但是如果你没有完成处理程序,你不能做的是调用- 正如你正在尝试做的那样。runAction(_:completion:)

于 2015-06-16T19:40:37.470 回答
1

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

sprite.runAction(moveToAction, completion: {})

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

sprite.runAction(moveToAction)

马特的答案确实更好。

于 2015-06-16T19:35:10.743 回答