Как да изберете коя функция да извикате от две функции при едно събитие на докосване въз основа на времето, през което потребителят е докоснал обект в corona sdk

Създавам обект, който искам да го направи плъзгащ се, когато приложа събитие за докосване върху него, и ако потребителят докосне този обект за повече от 5 секунди, този обект не трябва да работи като плъзгащ се обект, но тогава трябва да извикам друга функция, след това искам да изчистя брояча, така че след следващото докосване той да бъде реинициализиран..... как може да се постигне в корона Опитвах това с Timer = os.time(), но не можах да получа перфектния резултат. Моля, предложете някаква идея... благодаря

local function callfunc( event )
    local phase = event.phase
      if "began" == phase then
         Timer = os.time()
      if Timer>5 then
         func1()
        else
         func2()
    end
end

Runtime:addEventListener("touch",callfunc)

person user2588337    schedule 18.08.2013    source източник


Отговори (2)


Предполагам, че не можете да получите това, което постигате, защото не сте премахнали слушателя, когато отивате към друга функция, вижте моя код като справка:

local function func1()

--set the object as draggable 

end

local function func2()
--remove the listener of the func1() and set another listener here
--call other function here

end

local function callfunc( event )
    local phase = event.phase
      if "began" == phase then
         Timer = os.time()
      if Timer>5 then
         func1()
        else
         func2()
    end
end

Runtime:addEventListener("touch",callfunc)

можете да публикувате друг фрагмент от вашия код, където възниква проблемът, ако идеята по-горе не работи, тъй като аз само предполагам проблема, който сте срещнали. трудно е да се посочи къде възниква проблемът, ако има само фрагмент от код.

person DevfaR    schedule 18.08.2013

Таблицата със събития, предадена на събития с докосване, съдържа времето, когато се е случило събитието. В началната фаза бих съхранил event.time. След това, когато получите първата си преместена фаза, ако времето е над 5 секунди, дръжте се по един начин, в противен случай се дръжте по друг начин.

person Rob Miracle    schedule 18.08.2013