Объекты дерева в разделе DynamicObjects предназначены для поиска движений на экране. Вы можете добавлять новые объекты и удалять не нужные. Вы можете настраивать количество скриншотов по которым необходимо определять движения на экране. Движения могут искаться как без цветового фильтра, так и с фильтром по одному или нескольким цветам из раздела Colors, а также в режиме Borders.
Также данный объект можно использовать для поиска цветов, причем в отличие от обычного поиска цвета DynamicObjects ищет цвета параллельно с выполнением основного кода программы, кроме того если найдено несколько участков с искомым цветом, то результат будет представлен в виде массива координат участков(т.е. для каждого участка отдельный элемент массива с координатами участка с цветом), тогда как обычный поиск цвета представляет результат как координаты в которых находятся все найденные участки и работает только в основном потоке (т.е. поиск ведется не параллельно с основной программой, а начинается после вызова команды на поиск).
Каждый объект в разделе DynamicObjects содержит свойства:-
- RegularSearch — аналогично шаблонам, если свойство = true, то поиск динамических объектов будет выполняться в параллельном потоке, а ваш код будет просто забирать координаты объектов по команде Refresh, поэтому в основном потоке на это будет тратиться 0 миллисекунд.
- RefreshPeriod — время в секундах. Частота, с которой будут обновляться координаты движущихся объектов. Тут также имеет значение частота снятия скриншотов. Т.е. изменения не могут фиксироваться с частотой выше, чем частота обновления скриншотов.
- ConnectedScreen — в этом свойстве указывается используемый конвеер скриншотов(на котором будет фиксироваться изменения). По умолчанию заполняется глобальным конвеером.
- Name — имя объекта в дереве объектов и имя, по которому к объекту необходимо обращаться из кода программы.
- treshold — чувствительность, чем она выше, тем меньше будут учитываться незначительные изменения яркости (а при высоких значениях и значительные тоже). Свойство имеет смысл только при значении свойства maincolor = «All»
- MinYSize,MinXSize — позволяют задать минимальный размер объекта по оси X и по оси Y, объекты с меньшими размерами в результирующую выборку попадать не будут.
- QtyShots — количество скриншотов по которому будет приниматься решение. Т.е. если значение 2, то берется 2 подряд идущих скриншота и сравниваются, если 3 то сравниваться будут 3 скриншота.
- MainColor — цвет в котором производится анализ. All — анализ изменений ведется без применения фильтров. None — применяется фильтр Borders. Или любой цвет из раздела Colors.
- Mode — режим работы. Может принимать значения 1,2,3. 1 — если на анализируемых скриншотах хоть 1 точка на скриншоте совпадает с точкой в той же позиции
на другом скриншоте, то считаем что движения нет, т.е. в итоговую выборку такая точка не пойдет. Mode 2 режим когда в конечную выборку попадают точки которые есть хотя
бы на одном скриншоте. Режим не может быть использован если maicolor = All. Mode 3 то же что и режим 1, только в выборку попадают лишь те точки которые были на последнем скриншоте, не применим для цветового режима All
Для работы с объектом из кода программы необходимо написать в коде его название и поставить символ «.» (точка), в выпадающем списке будет виден список всех доступных свойств и методов объекта:
- Refresh -В случае успеха возвращает истину. Получает последние координаты объектов, если работа в параллельном потоке не предусмотрена, то по этой команде будет выполнен поиск динамических объектов, иначе просто взяты координаты уже найденных. Если метод возвращает ложь, то выборка координат не обновляется, т.е. там остается набор координат, полученный во время последнего успешного поиска.
- Start — запустить процесс поиска/создания скриншотов.
- Stop — остановить процесс поиска/создания скриншотов (освобождает память и процессор)
- SetRect(pLeft: Integer; pTop: Integer; pRight: Integer; pBottom: Integer) — установить прямоугольник внутри которого будет осуществляться поиск. Если не устанавливать, то по умолчанию будет вестись анализ области соответствующей полному размеру скриншота на конвейере скриншотов.
- Объект содержит в себе массив координат всех выявленных участков изображения, на которых было зафиксировано движение.
- Left,Top,Bottom,Right — координаты участка изображения из текущего элемента массива.
- Index — номер текущего элемента массива.
- Next — перейти к следующему элементу массива, в случае успеха возвращает истину.
- First — перейти к первому элементу массива.
- Last — перейти к последнему элементу массива.
- Previous — Перейти к предыдущему элементу массива.
- MouseMove — передвинуть курсор мыши в случайные координаты внутри прямоугольника указанного в текущем элементе массива.
- MouseClick — кликнуть кнопкой мыши в случайные координаты внутри прямоугольника указанного в текущем элементе массива. Значения параметра: ‘L’ — клик левой кнопкой, ‘D’ — двойной клик левой кнопкой мыши. ‘R’ — клик правой кнопкой мыши. Параметр необходимо писать в одинарных кавычках, также как указано в предыдущем предложении.
Пример поиска динамических объектов представлен в архиве, exe файл это окно внутри которого движется зеленый квадратик, файл с расширением noc это скрипт, который находит это окно и ищет внутри него движение, а если находит, то наводит на него курсор мыши. Скрипт отключается кнопкой esc. Форма с движущимся объектом также останавливается если сделать ее активной и нажать esc: