2016-09-01 3 views
0

Я пытаюсь отменить таймер, но он не отменен, когда он должен, и каждый раз, когда происходит прикосновение события, новый таймер будет добавлен:Попытка отменить таймер

local fireTimer 

local function onTouch(event) 

    if(event.phase == "began") then 
    fireTimer = timer.performWithDelay(3000, fire, 0) <-- works fine 

    elseif(event.phase == "ended") then 
    timer.cancel(fireTimer) <-- doesn't work, it keeps going, "pause" doesn't work either 

    end 
end 

player:addEventListener("touch", onTouch) 
+0

вы проверили документы? https://docs.coronalabs.com/api/library/timer/cancel.html –

+0

Также здесь https://docs.coronalabs.com/api/event/timer/source.html –

+0

Так что в основном вы захотите ссылаться на Свойства 'event' param, чтобы определить, активно ли событие. –

ответ

1

Это потому что ваше прикосновение событие действительно «закончился» перед началом пожара и поэтому обыкновение отменить эту функцию:

Посмотреть этот пример, в котором он работает, когда задержка только 1 вместо вашего 3000.

local player = display.newRect(0, 0, 150, 50) 

local function fire() 
    print("touched") 
end 

local function fireTimer2() 
    print("Ended touched") 
end 

local function onTouch(event) 

    if(event.phase == "began") then 
    fireTimer = timer.performWithDelay(1, fire, 0) 

    elseif(event.phase == "ended") then 
    timer.cancel(fireTimer) 
    print("Ended touched") 
    end 
end 

player:addEventListener("touch", onTouch) 
Смежные вопросы