Как запустить код после timer.performWithDelay? - Corona Sdk - PullRequest
0 голосов
/ 07 августа 2020

В этом скрипте:

function moveB()
    if B then   
        B.x = B.x + 4
    end
end
function clickA()
    A.isVisible = false
    B.isVisible = true
    if fastSquare then
        B.x, B.y = A.x, A.y
        timer.performWithDelay(20, moveB, 5)
        A.isVisible = true
        B.isVisible = false
    end
end
A:addEventListener("tap", clickA)

, я хочу, чтобы этот код:

A.isVisible = true
B.isVisible = false

запускался после того, как timer.performWithDelay() имеет функцию вызова moveB () 5 раз, но они запускаются одинаково время, даже если я поставил A.isVisible = false B.isVisible = true ниже timer.performWithDelay().

1 Ответ

0 голосов
/ 07 августа 2020
timer.performWithDelay(20, moveB, 5)

Говорит: после 20 мс вызова moveB, сделайте это всего 5 раз.

Так как это просто регистрация синхронизированного вызова moveB, все, что происходит после этой строки, выполняется немедленно.

Поскольку вы уже установили эти свойства перед оператором if, нет необходимости делать это снова внутри оператора if. Не действует.

 A.isVisible = false
    B.isVisible = true
    if fastSquare then
        B.x, B.y = A.x, A.y
        timer.performWithDelay(20, moveB, 5)
        A.isVisible = false -- obsolete
        B.isVisible = true -- obsolete
    end
...