2013-05-10 7 views
1

Мне было интересно, как бы я проверил, коснулся ли пользователь экрана, но держит их прикосновение и не двигается. Пожалуйста, помогите, если у вас есть все, от чего я могу пойти. Я смотрел вокруг и еще не нашел ничего, чтобы справиться с этим.Событие Touch Hold В короне SDK

ответ

4

Вы можете использовать/изменить это: (Это то, что говорит Роб Miracle)

local holding = false 
local function enterFrameListener() 
    if holding then 
     -- Holding button 
     -- Code here 
     -- Code here 
     -- Code here 
    else 
     -- Not holding 
     -- Code here 
     -- Code here 
     -- Code here 
    end 
end 

local function touchHandler(event) 
    if event.phase == "began" then 
     display.getCurrentStage():setFocus(event.target) 
     event.target.isFocus = true 
     Runtime:addEventListener("enterFrame", enterFrameListener) 
     holding = true 
    elseif event.target.isFocus then 
     if event.phase == "moved" then 
     elseif event.phase == "ended" then 
      holding = false 
      Runtime:removeEventListener("enterFrame", enterFrameListener) 
      display.getCurrentStage():setFocus(nil) 
      event.target.isFocus = false 
     end 
    end 
    return true 
end 

Я полагаю, что ее очевидная функция, что touchHandler является ^^

1

Вам понадобится сенсорный прослушиватель, добавленный к объекту, покрывающему весь экран, или вы можете добавить его в RunTime системы.

Смотрите это руководство: http://docs.coronalabs.com/guide/events/detectEvents/index.html#hit

Теперь, Есть три «фазы» для этих сенсорных событий. Вы получаете его, когда начинается пресса («начинается»), если человек перемещает свой палец («переместился»), и когда они перестают прикасаться, происходит «завершенная» фаза.

В зависимости от того, что вы пытаетесь сделать, если вы говорите что-то движется, удерживая кнопку нажатой, то вы можете установить флаг как:

if event.phase == "began" then 
     pressed = true 
elseif event.phase == "ended" then 
     pressed = false 
end 

Тогда где когда вы двигаетесь вы можете проверить для просмотра «если нажать, а затем переместить».

+0

Прямо сейчас у меня есть EventListener работает так, что если я прикоснусь объект, который он обрабатывает свою функцию, но если я просто удерживаю его, как простую кнопку, он не обрабатывает его непрерывно, и это тот эффект, который он ищет. Я хочу, чтобы он продолжал срабатывать, если его толкали. –

+0

Правильно вам понадобится что-то вроде прослушивателя «enterFrame» Runtime, чтобы делать то, что вы хотите сделать, контролируя состояние флага. Не будет никаких дополнительных событий, в которых говорится: «Я все еще удерживаю это». –

+0

, так как цикл таймера и событие запускают переменную обработки или что-то, что позволяет таймеру что-то обрабатывать? –

Смежные вопросы