Изменение скорости или множитель задержек
Для более гибкой настройки выполнениея скрипта в приложении есть множители задержек multiplier и минимальные задержки minDelay. Множитель задержки - это вещественное число, на которое умножается каждая задержка в данном объекте. Для объекта mouse он свой и не зависит от аналогичных в key и system. Стандартное значение множителя задержек и скорости = 1. Рассмотрим пример
mouse.setMultiplier(0.5);
key.setMultiplier(0.5);
system.setMultiplier(0.5);
mouse.press('LEFT');
mouse.release('LEFT');
system.sleep(1000);
key.press('A');
key.release('A');
Вызовами setMultiplier мы устанавливаем множители равными 0,5. Это означает, что во внутренней
реализации стандартная задержка, к примеру pressDelay, будет умножена на это число, а значит
уменьшена вдвое. Таким способом, установив задержку меньше 1 можно ускорить воспроизведение событий, а установив
множитель больше 1 замедлить.
Для удобства использования есть обратный параметр speed, который отображает скорость
воспроизведения событий. По умолчанию он также равен 1, что означает, скрипт будет воспроизводить все событий
без изменения задержек. Если установить значение скорости как 2, это означает, что скорость воспроизведения
увеличиться в двое.
Параметр speed - это обратная величина к multiplier, изменение одной из них
приводит к изменению второй. К примеру, если speed = 2, то multiplier =
0.5.
В примере ниже, начальная скорость равна 1 и с каждой итерацией скорость перемещения курсора увеличивается на
10%
var speed = 1;
while(speed < 5){
system.println('speed = '+speed);
mouse.setSpeed(speed);
system.setSpeed(speed);
moveMouse();
speed*=1.1;
}
function moveMouse(){
combined.run('base64','AgDwgDeDgAJAgDzgDgDgAYAg'+
'D3gDhDgAoAgD9gDkDgAoAgEBgDoDgAgAgEEgDqDgAYAgEE'+
'gDsDgAgAgEFgDuDgAgAgEFgDyDgAgAgEFgD1DgAgAgEFgD'+
'3DgAoAgEDgD+DgAgAgECgEBDgAgAgEBgECDgAgAgD+gEFD'+
'gAgAgD7gEIDgAgAgD1gEMDgAgAgDugEQDgAgAgDpgETDgA'+
'wAgDhgETDgAYAgDdgETDgAgAgDYgESDgAgAgDRgEPDgAgA'+
'gDOgELDgAgAgDKgEFDgAgAgDGgD/DgAgAgDFgD5DgAoAgD'+
'EgDzDgAgAgDEgDtDgAgAgDFgDpDgAgAgDIgDlDgAgAgDMg'+
'DhDgAgAgDRgDeDgAgAgDXgDcDgAgAgDfgDaDgAoAgDlgDZ'+
'DgAgAgDogDZ');
}
Увеличение скорости выполнения скрипта означает, что задержки между событиями уменьшаются. При очень малых
значениях задержек скрипт может начать некорректно работать либо полностью прекратить свою работу. Для решения
данной проблемы у каждого объекта есть параметр минимальной задержки minDelay, который
ограничивает минимально возможный предел для каждой задержки. По стандарту он равен 5 миллисекунд. Его так же
можно установить соответствующим методом и приравнять к 0, чего делать не рекомендуется. Если же вы решили
установить значение минимальной задержки равной 0, то будьте очень внимательные и следите за задержками
самостоятельно, иначе скрипт может зависнуть.
Не рекомендуется устанавливать значения задержек меньше 10 мс, а для ускорения работы скрипта лучше всего
использовать только параметр system.speed который изменяет только задержки переданные методу
system.sleep(delay). Задержки в данном методе вполне могут быть равны 0, что совершенно никак
не скажется на работоспособности системы. При установленном параметре system.speed равным 0, и
остальных задержек и множителях в стандартных значениях, максимальное количество событий равно 100 событий в
секунду, что все еще более чем достаточно для работы.
Для большего понимания взаимодействий задержек, множителей и минимальных задержек, рассмотрим наглядный пример
для события нажатия клавиши клавиатуры.
// Любое событие происходит моментально
// без каких либо задержек сразу после вызова метода
press('A');
// После события добавляется задержка
//
// Вычисляется задержка с учетом множителя
var delay = pressDelay*multiplier;
if(delay >= minDelay){
// если значение задержки для события получается больше чем минимальная задержка,
// то подождать получившиеся количество мс.
sleep(delay);
}else{
// если полученное значение задержки получается меньше чем минимальная задержка,
// то подождать минимально допустимое количество мс.
sleep(minDelay);
}