2016-02-04 2 views
0

У меня есть ошибка, когда вызываем func, что аргумент закрывается.Как сделать аргумент закрытием?

Вот мой код:

func animateSwap(swap: Swap, completion:() ->() = {}) { 

    let spriteA = swap.cookieA.sprite! 
    let spriteB = swap.cookieB.sprite! 

    spriteA.zPosition = 100 
    spriteB.zPosition = 90 

    let Duration: NSTimeInterval = 0.3 

    let moveA = SKAction.moveTo(spriteB.position, duration: Duration) 
    spriteA.runAction(moveA, completion: completion) 

    let moveB = SKAction.moveTo(spriteA.position, duration: Duration) 
    spriteB.runAction(moveB) 

} 

Когда я называю FUNC как этот

scene.animateSwap(swap, completion: handleMatches()){ 

     } 

У меня есть ошибка:

Extra argument 'completion' in call

ответ

0

Структура completion является неправильным для ваших целей. Замените первую строку с:

func animateSwap(swap: Swap, completion: (() -> Void)?) ->() { 

и добавить return completion!() до конца функции. Однако это означает, что вы не можете запустить эту функцию с помощью completion: nil, поэтому вы можете также проверить, завершено ли ноль, прежде чем возвращать его.

и использовать его как это:

scene.animateSwap(swap, completion: { 
    // All code here will be run on completion 
    handleMatches() 
}) 
+0

Привет ДЗК Спасибо за ваш ответ. –