Post by BotsOFF on Jun 8, 2020 21:04:17 GMT
Есть функции очень важные для настройки скриптов. Некоторые позволяют сделать так, чтобы сценарий работал правильно. Некоторые предназначены для разработки и отладки.
Настройки функций скриптов
Settings:setCompareDimension(boolean compareByWidth, int pixels): Эта функция используется для задания параметра соответствия (сравнения) изображения.
compareByWidth: Если приложение, которое мы хотим автоматизировать, масштабируется по ширине, установите значение true. Это подходит к большинству приложений.
pixels: Число пикселей экрана при сопоставлении изображений. Значение может быть как ширина или высота, согласно значению compareByWidth.
Возвращаемое значение: пусто
AnkuLua может работать на разных устройствах с одним и тем же скриптом. Возьмем наш первый пример. Мы получили изображения с устройства с шириной экрана 960, поэтому пишем вот такой код:
Если ширина экрана устройства где выполняется скрипт другая, то снимок экрана сначала масштабируется до 960, а затем выполняется сопоставление изображений.
Все сделанные ранее картинки будут масштабироваться в соответствии с нашей настройкой, скрипт будет выполняться в любом случае.
Примечание: Количество пикселей - это используемый размер экрана приложения, а не реальный размер экрана.
Устройство с панелью навигации - это один из случаев, когда размер экрана, используемого приложением, отличается от реального размера.
На следующем рисунке размер экрана, используемого приложением, находится внутри желтого прямоугольника.
getAppUsableScreenSize(): Функция используется для получения используемого размера экрана приложения.
getRealScreenSize(): Функция используется для получения реального размера экрана приложения.
setImmersiveMode(enable): Некоторые устройства имеют экранную панель навигации. Обычно панель навигации не может использоваться приложением.
В режиме погружения (immersive mode) панель навигации исчезнет. А оригинальную область панели навигации будет использовать приложение.
Если приложение находится в режиме погружения, используйте эту функцию, в противном случае AnkuLua может работать неправильно.
Ссылка: Google's explanation on Immersive
autoGameArea(enable): Некоторые устройства имеют вырез ("челка"). Обычно в играх эти области не используются, но эти области есть на скриншотах AnkuLua. Это может привести к неправильной работе AnkuLua.
Android P имеет официальный API для поддержки выреза экрана ("челки"). Высоту данной области можно получить, поэтому, если пользовательское устройство имеет такую область, предложите обновить устройство до Android P и выше. При установке autoGameArea(true) AnkuLua может определить размеры области выреза ("челки").
Настоятельно рекомендуется установить в первую очередь режим погружения (immersive mode), а затем, при необходимости, установить autoGameArea(true).
getGameArea(): После установки setImmersiveMode() и autoGameArea(), можно использовать getGameArea() для получения используемой области AnkuLua.
Пример:
Ниже приведён снимок экрана устройства с разрешением 2246x1080. Высота выреза экрана ("челки") 86.
На устройстве установлена альбомная ориентация и вырез экрана находится с лева.
В таблице ниже приведены различные значения полученные функцией getGameArea() при различных настройках setImmersiveMode() и autoGameArea().
setGameArea(Region region): Устанавливает используемую область в ручную.
В некоторых играх пропорции используемой области одинаковы, на разных устройствах.
Для таких игр можно использовать setGameArea(), чтобы включить только используемую область и исключить черные область слева и справа.
Затем мы можем сохранить другие части скрипта без изменений и заставить скрипт работать на обоих устройствах.
Settings:setScriptDimension(boolean compareByWidth, int pixels): Эта функция используется для установки размера экрана устройства, на котором написан скрипт.
compareByWidth: Если приложение, которое мы хотим автоматизировать, масштабируется по ширине, установите значение true. Это подходит к большинству приложений.
pixels: Число пикселей экрана при сопоставлении изображений. Значение может быть как ширина или высота, согласно значению compareByWidth.
Возвращаемое значение: пусто
Это значение также относится к размеру используемого экрана в приложении. Когда используется это значение? Рассмотрим один пример:
Location(100,200) - абсолютное значение, его нужно масштабировать на работающем устройстве. Это значение, размер установленный сценарием (script dimension) и используемый размер экрана приложения устройства используются для определения параметров масштабирования.
Возможно ли, что значения comparing dimension и script dimension могут различаться? Да.
Скорость сопоставления изображения напрямую связана со значением comparing dimension. Поэтому можно уменьшить искомые изображения и установить соответствующие значения.
Это ускорит процесс сопоставления изображений.
setImagePath(String path): Эта функция задает путь к каталогу в котором хранятся изображения для сопоставления. По умолчанию, это папка "image" в каталоге со скриптом.
Settings:setROI(Region reg): Задает область поиска изображения, не принадлежащей какой-либо области. Если переменная reg не указана, то сбрасывается весь экран.
Settings:getROI(): возвращает область, заданную Settings:setROI().
Settings:set(String var, double value)
var: одно из AutoWaitTimeout или MinSimilarity
value: когда переменная AutoWaitTimeout, это значение является секундами ожидания по умолчанию, если это значение не указано в похожих функциях, например wait().
когда переменная MinSimilarity, это значение является значением схожести (similarity) по умолчанию для объекта S или объекта P с присвоением аналогичного значения через функцию similar().
Возвращаемое значение: пусто
Если эти значения не установлены, то значения по умолчанию для AutoWaitTimeout равно 3 секундам, а для MinSimilarity равно 0.7.
Settings:get(String var)
var: одно из AutoWaitTimeout или MinSimilarity
Возвращаемое значение: возвращает текущие значения для AutoWaitTimeout или MinSimilarity соответственно.
usePreviousSnap(boolean value): Эта функция позволяет повторно использовать предыдущий снимок экрана (true) или нет (false). Основным преимуществом функции является скорость. Если требуется выполнить поиск различных изображений на одном и том же снимке экрана, можно выполнить следующие код:
snapshot(): Функция берет серый снимок текущего экрана и устанавливает значение "true" для параметра "usePrevureSnap".
Это может сделать скрипт более простым. Например, скрипт, указанный выше, может быть записан как:
snapshotColor(): Функция схожа с snapshot(). Единственное отличие состоит в том, что сделанный снимок является цветным.
Используйте функцию, только если требуется getColor() на этом снимке.
setAlternativeClick(boolean enable): В некоторых приложениях есть проблемы с базовыми нажатиями. Поэтому начиная с версии 3.2.0 вводится режим альтернативных нажатий. Используйте данную функцию для включения этого режима.
Настройки для разработки скриптов
Settings:snapSet(String var, boolean value): Эта функция используется для сохранения снимка экрана с последующей обработкой и сохранением результата. Обработанные изображения сохраняются в каталоге /sdcard/AnkuLua/captured_images
var: одно из OutputCaptureImg, OutputCropImg, OutputResizeImg or OutputRegImg
value: когда переменная OutputCaptureImg и установлено значение true, сделанное изображение будет сохранено как "capture.png"
когда переменная OutputCropImg и установлено значение true, обрезанное изображение будет сохранено в папке "captured_images" как "crop.png". AnkuLua обрезает сделанные изображения учитывая включен режим погружения (immersive mode) или нет (весь экран или используемый размер экрана)
когда переменная OutputResizeImg и установлено значение true, обрезанное изображение после изменения размера будет сохранено в каталоге "captured_images" как "resize.png". AnkuLua меняет размер изображений, учитывая настройки пользователя в setCompareDimension
когда переменная OutputRegImg и установлено значение true, если используется задание области, изображение в этой области будет сохранено как "region.png".
Возвращаемое значение: пусто
[Вперед]: Функции пользовательского интерфейса
[Назад]: intellij IDEA: рекомендуемый редактор
[Главная]: AnkuLua. Введение
Настройки функций скриптов
Settings:setCompareDimension(boolean compareByWidth, int pixels): Эта функция используется для задания параметра соответствия (сравнения) изображения.
compareByWidth: Если приложение, которое мы хотим автоматизировать, масштабируется по ширине, установите значение true. Это подходит к большинству приложений.
pixels: Число пикселей экрана при сопоставлении изображений. Значение может быть как ширина или высота, согласно значению compareByWidth.
Возвращаемое значение: пусто
AnkuLua может работать на разных устройствах с одним и тем же скриптом. Возьмем наш первый пример. Мы получили изображения с устройства с шириной экрана 960, поэтому пишем вот такой код:
Settings:setCompareDimension(true, 960)
Если ширина экрана устройства где выполняется скрипт другая, то снимок экрана сначала масштабируется до 960, а затем выполняется сопоставление изображений.
Все сделанные ранее картинки будут масштабироваться в соответствии с нашей настройкой, скрипт будет выполняться в любом случае.
Примечание: Количество пикселей - это используемый размер экрана приложения, а не реальный размер экрана.
Устройство с панелью навигации - это один из случаев, когда размер экрана, используемого приложением, отличается от реального размера.
На следующем рисунке размер экрана, используемого приложением, находится внутри желтого прямоугольника.
Никогда не изменяйте scriptDimension и compareDimension в соответствии с устройствами. При таких изменениях скрипт будет работать некорректно на разных устройствах с разными разрешениями.
Никогда не изменяйте scriptDimension и compareDimension в соответствии с устройствами. При таких изменениях скрипт будет работать некорректно на разных устройствах с разными разрешениями.
Никогда не изменяйте scriptDimension и compareDimension в соответствии с устройствами. При таких изменениях скрипт будет работать некорректно на разных устройствах с разными разрешениями.
AnkuLua автоматически меняет размер снимка экрана в соответствии с compareDimension. Кроме того, AnkuLua меняет размер Region(), Location(), targetOffset() и других параметров в соответствии с scriptDimension.
Принцип работы AnkuLua приведен по ссылке ниже
ankulua.boards.net/thread/39/scripts-optimization
Никогда не изменяйте scriptDimension и compareDimension в соответствии с устройствами. При таких изменениях скрипт будет работать некорректно на разных устройствах с разными разрешениями.
Никогда не изменяйте scriptDimension и compareDimension в соответствии с устройствами. При таких изменениях скрипт будет работать некорректно на разных устройствах с разными разрешениями.
AnkuLua автоматически меняет размер снимка экрана в соответствии с compareDimension. Кроме того, AnkuLua меняет размер Region(), Location(), targetOffset() и других параметров в соответствии с scriptDimension.
Принцип работы AnkuLua приведен по ссылке ниже
ankulua.boards.net/thread/39/scripts-optimization
getRealScreenSize(): Функция используется для получения реального размера экрана приложения.
local screen = getAppUsableScreenSize()
print(screen:getX()) -- ширина используемого размера экрана приложения
print(screen:getY()) -- высота используемого размера экрана приложения
screen = getRealScreenSize()
print(screen:getX()) -- ширина реального размера экрана приложения
print(screen:getY()) -- высота реального размера экрана приложения
setImmersiveMode(enable): Некоторые устройства имеют экранную панель навигации. Обычно панель навигации не может использоваться приложением.
В режиме погружения (immersive mode) панель навигации исчезнет. А оригинальную область панели навигации будет использовать приложение.
Если приложение находится в режиме погружения, используйте эту функцию, в противном случае AnkuLua может работать неправильно.
Ссылка: Google's explanation on Immersive
autoGameArea(enable): Некоторые устройства имеют вырез ("челка"). Обычно в играх эти области не используются, но эти области есть на скриншотах AnkuLua. Это может привести к неправильной работе AnkuLua.
Android P имеет официальный API для поддержки выреза экрана ("челки"). Высоту данной области можно получить, поэтому, если пользовательское устройство имеет такую область, предложите обновить устройство до Android P и выше. При установке autoGameArea(true) AnkuLua может определить размеры области выреза ("челки").
Настоятельно рекомендуется установить в первую очередь режим погружения (immersive mode), а затем, при необходимости, установить autoGameArea(true).
getGameArea(): После установки setImmersiveMode() и autoGameArea(), можно использовать getGameArea() для получения используемой области AnkuLua.
Пример:
Ниже приведён снимок экрана устройства с разрешением 2246x1080. Высота выреза экрана ("челки") 86.
На устройстве установлена альбомная ориентация и вырез экрана находится с лева.
В таблице ниже приведены различные значения полученные функцией getGameArea() при различных настройках setImmersiveMode() и autoGameArea().
setImmersiveMode() | autoGameArea() | border color | getGameArea() | Note |
false | false | yellow | (0, 0, 2034, 1080) | Учитывает вырез, но исключает правую область шириной 86 пикселей. |
false | true | blue | (86, 0, 2034, 1080) | Исключает вырез и панель навигации. Правильная настройка для приложения калькулятора. |
true | false | (0, 0, 2246, 1080) | Полностью весь экран целиком | |
true | true | red | (86, 0, 2160, 1080) | Размер экрана, за исключением выреза |
setGameArea(Region region): Устанавливает используемую область в ручную.
В некоторых играх пропорции используемой области одинаковы, на разных устройствах.
Для таких игр можно использовать setGameArea(), чтобы включить только используемую область и исключить черные область слева и справа.
Затем мы можем сохранить другие части скрипта без изменений и заставить скрипт работать на обоих устройствах.
Settings:setScriptDimension(boolean compareByWidth, int pixels): Эта функция используется для установки размера экрана устройства, на котором написан скрипт.
compareByWidth: Если приложение, которое мы хотим автоматизировать, масштабируется по ширине, установите значение true. Это подходит к большинству приложений.
pixels: Число пикселей экрана при сопоставлении изображений. Значение может быть как ширина или высота, согласно значению compareByWidth.
Возвращаемое значение: пусто
Это значение также относится к размеру используемого экрана в приложении. Когда используется это значение? Рассмотрим один пример:
click(Location(100,200))
Location(100,200) - абсолютное значение, его нужно масштабировать на работающем устройстве. Это значение, размер установленный сценарием (script dimension) и используемый размер экрана приложения устройства используются для определения параметров масштабирования.
Возможно ли, что значения comparing dimension и script dimension могут различаться? Да.
Скорость сопоставления изображения напрямую связана со значением comparing dimension. Поэтому можно уменьшить искомые изображения и установить соответствующие значения.
Это ускорит процесс сопоставления изображений.
setImagePath(String path): Эта функция задает путь к каталогу в котором хранятся изображения для сопоставления. По умолчанию, это папка "image" в каталоге со скриптом.
Settings:setROI(Region reg): Задает область поиска изображения, не принадлежащей какой-либо области. Если переменная reg не указана, то сбрасывается весь экран.
existsClick("1.png") -- поиск по всему экрану картинки 1.png
Settings:setROI(Region(100, 200, 300, 400))
existsClick("1.png") -- Равнозначно Region(100,200,300,400):existsClick("1.png")
Settings:getROI(): возвращает область, заданную Settings:setROI().
Settings:set(String var, double value)
var: одно из AutoWaitTimeout или MinSimilarity
value: когда переменная AutoWaitTimeout, это значение является секундами ожидания по умолчанию, если это значение не указано в похожих функциях, например wait().
когда переменная MinSimilarity, это значение является значением схожести (similarity) по умолчанию для объекта S или объекта P с присвоением аналогичного значения через функцию similar().
Возвращаемое значение: пусто
Если эти значения не установлены, то значения по умолчанию для AutoWaitTimeout равно 3 секундам, а для MinSimilarity равно 0.7.
Settings:get(String var)
var: одно из AutoWaitTimeout или MinSimilarity
Возвращаемое значение: возвращает текущие значения для AutoWaitTimeout или MinSimilarity соответственно.
usePreviousSnap(boolean value): Эта функция позволяет повторно использовать предыдущий снимок экрана (true) или нет (false). Основным преимуществом функции является скорость. Если требуется выполнить поиск различных изображений на одном и том же снимке экрана, можно выполнить следующие код:
wait("image1.png")
usePreviousSnap(true)
if (exists("image2.png") or exists("image3.png") then -- используем предыдущий снимок экрана
-- делаем что-то
end
usePreviousSnap(false) -- не забываем вернуть значение false
snapshot(): Функция берет серый снимок текущего экрана и устанавливает значение "true" для параметра "usePrevureSnap".
Это может сделать скрипт более простым. Например, скрипт, указанный выше, может быть записан как:
snapshot() -- делаем снимок экрана. При всех следующих распознаваниях изображения этот снимок будет использоваться до тех пор, пока не будет установлен параметр usePrevureSnap(false)
wait("image1.png") -- не делаем снимок экрана
if (exists("image2.png") or exists("image3.png") then -- не делаем снимок экрана
-- делаем что-то
end
usePreviousSnap(false) -- не забываем вернуть значение false
snapshotColor(): Функция схожа с snapshot(). Единственное отличие состоит в том, что сделанный снимок является цветным.
Используйте функцию, только если требуется getColor() на этом снимке.
setAlternativeClick(boolean enable): В некоторых приложениях есть проблемы с базовыми нажатиями. Поэтому начиная с версии 3.2.0 вводится режим альтернативных нажатий. Используйте данную функцию для включения этого режима.
setAlternativeClick(enable)
Настройки для разработки скриптов
Settings:snapSet(String var, boolean value): Эта функция используется для сохранения снимка экрана с последующей обработкой и сохранением результата. Обработанные изображения сохраняются в каталоге /sdcard/AnkuLua/captured_images
var: одно из OutputCaptureImg, OutputCropImg, OutputResizeImg or OutputRegImg
value: когда переменная OutputCaptureImg и установлено значение true, сделанное изображение будет сохранено как "capture.png"
когда переменная OutputCropImg и установлено значение true, обрезанное изображение будет сохранено в папке "captured_images" как "crop.png". AnkuLua обрезает сделанные изображения учитывая включен режим погружения (immersive mode) или нет (весь экран или используемый размер экрана)
когда переменная OutputResizeImg и установлено значение true, обрезанное изображение после изменения размера будет сохранено в каталоге "captured_images" как "resize.png". AnkuLua меняет размер изображений, учитывая настройки пользователя в setCompareDimension
когда переменная OutputRegImg и установлено значение true, если используется задание области, изображение в этой области будет сохранено как "region.png".
Возвращаемое значение: пусто
[Вперед]: Функции пользовательского интерфейса
[Назад]: intellij IDEA: рекомендуемый редактор
[Главная]: AnkuLua. Введение