我正在尝试使用以下代码:
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)
马特的答案确实是更好的。