2015-06-16 86 views
0

我嘗試使用下面的代碼:雨燕2.0的錯誤

sprite.runAction(moveToAction, completion: nil) 

錯誤說:

不能援引「

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) 
} 

我在這條線得到一個錯誤runAction'與類型'(SKAction,completion:nil)'的參數列表'

我不明白如何解決這個問題。

回答

1

完成處理程序不是可選的。你需要傳遞一些東西。您可以傳遞一個空的封閉:

sprite.runAction(moveToAction, completion: {}) 

或者,正如馬特指出,更好的辦法是使用其它形式:

sprite.runAction(moveToAction) 

馬特的答案是真是最好的一個。

+1

其實它是可選的 - 整個參數是可選的。 – matt

+0

好的;它不是* an *可選的(即可以將'nil'傳遞給)。不過,我沒有看到它們有過載的情況。 –

+0

謝謝!對此,我真的非常感激! –

2

您正在調用錯誤的方法。如果您沒有完成處理程序,則不要致電runAction(_:completion:)。呼叫簡單runAction(_:),就像這樣:

sprite.runAction(moveToAction) 

換句話說,你有兩個選擇:

  • 你可以打電話runAction(_:)如果你沒有完成處理,或

  • 你可以調用如果您有完成處理程序,則爲runAction(_:completion:)

但是你不能要做的就是調用runAction(_:completion:)如果你沒有完成處理 - 因爲你正在嘗試做的。