Код: Выделить всё
// Сбросить временную переменную
registerEvent($ot.'_'.$params['pt'].'_clicks', $details='1', $expire_in=1);
Код: Выделить всё
case 3: // P&R //Задача - Получить любые комбинации
// Получаем детали события
$dt = registeredEventDetails($ot.'_'.$params['pt'].'_clicks');
// Параметр doit будет добавлен при последующем рекурсивном вызове для окончания обработки комбинации нажатия
if (!isset($params['doit'])) {
// Добавить состояние (нажата/отпущена) и записать в детали события
registerEvent($ot.'_'.$params['pt'].'_clicks', $details=$dt.$ms, $expire_in=1);
// Если таймер не существует
if (!timeOutExists($ot.'_'.$params['pt'].'_press')) {
// Нажата или отпущена
if ($ms) {
// Сбросить временную переменную
registerEvent($ot.'_'.$params['pt'].'_clicks', $details='1', $expire_in=1);
// создать таймер с рекурсивным вызовом
setTimeOut($ot.'_'.$params['pt'].'_press', "cm($ot.'.incomingMessage', array('pt'=>".$params['pt'].", 'doit'=>1));", 1);
} else {
// сразу рекурсивный вызов
callMethod($ot.'.incomingMessage', array('pt'=>$params['pt'], 'doit'=>1));
}
}
} else { // параметр doit есть. Значит это рекурсивный вызов для окончания обработки комбинации нажатия
// если справа 1 (то есть последнее действие нажал)
if (substr($dt, -1)) {
registerEvent($ot.'_'.$params['pt'].'_clicks', $details=$dt.'-', $expire_in=1);
} else {
registerEvent($ot.'_'.$params['pt'].'_clicks', $details='', $expire_in=1); // тут можно просто удалять
}
/* Закомментировать или удалить этот блок switch после отладки */
switch ($dt) { //1-нажал 0-отпустил
case '10': say('нажатие'); break;
case '1010': say('двойное нажатие'); break;
case '101010': say('тройное нажатие'); break;
case '1': say('удержание'); break;
case '101': say('удержание после двойного'); break;
case '10101': say('удержание после тройного'); break;
case '1-0': say('отпустил'); break;
case '101-0': say('отпустил после двойного'); break;
case '10101-0': say('отпустил после тройного'); break;
default: say('непонятно'); break;
}
// ВЫПОЛНИТЬ нужный метод с передачей ему кода комбинации $dt
}
break;