跳到主要内容
版本:4.0.0

屏幕取色

自动化脚本需要在屏幕上模拟手指、作出交互,这就需要对屏幕上的信息进行识别。

让我们先来了解一种最通用的手段:脚本编写时,对屏幕上特定区域的颜色进行 采样,并写入到脚本当中;脚本运行时,对屏幕图像进行 搜索,与脚本中固化的颜色进行 模式匹配,从而判断出屏幕上是否重现了预期的状态。

采样工具

XXTouchNG VSCode 插件中自带了 屏幕抓抓 功能,提供了最基本的颜色采样功能。如果你使用的是 Windows PC,可以使用 XXTStudio 内置的屏幕取色功能。此外,还有一些第三方的屏幕取色工具。

XXT 取色器

XXT 取色器是一个小巧精悍的 跨平台 的 Java 取色器,可以无缝配合 XXTouch 和 XXTouchNG 扫描局域网内的设备、截图取色,并将颜色值以十六进制的形式复制到剪贴板。你还可以直接在取色器中编写、调试脚本,无需在电脑上安装任何 IDE。

JSTColorPicker

JSTColorPicker 是一款专为 macOS 设计并优化的多功能位图取色和标注工具,能够为 PNG 或 JPEG 位图选择颜色和坐标,或添加矩形的矢量标注,支持自定义格式灵活导出。该软件需要另外付费购买,但是可以免费试用。 请参阅:

提示

对于 XXTouchNG 合作伙伴,我们提供了免费的 JSTColorPicker 授权码。

试一试!多点找色

上述三种采样工具中均包含了预设的 XXTouchNG 配套代码模版,假设你已经完成了 包含 “App Store” 图标的主屏幕界面 的一次 多点相似度模式找色 采样,并且复制了生成的代码。在 VSCode 工作区新建 find-color.lua 脚本并将代码粘贴进去,然后运行脚本,看看是否能够找到预期的颜色:

find-color.lua
x, y = screen.find_color({
{ 266, 107, 0x1aa5f6, 90.00 }, -- 1
{ 282, 107, 0xffffff, 90.00 }, -- 2
{ 309, 107, 0x1aa5f7, 90.00 }, -- 3
{ 273, 122, 0xffffff, 90.00 }, -- 4
{ 289, 122, 0x1a9af6, 90.00 }, -- 5
{ 302, 122, 0xffffff, 90.00 }, -- 6
{ 317, 122, 0x1c99f6, 90.00 }, -- 7
{ 247, 148, 0x1c86f3, 90.00 }, -- 8
{ 259, 148, 0xffffff, 90.00 }, -- 9
{ 271, 148, 0x1c86f3, 90.00 }, -- 10
})
-- 以上代码由 JSTColorPicker 生成
nLog(x .. ", " .. y)
if x ~= -1 and y ~= -1 then
touch.tap(x, y)
end

你可以尝试改变主屏幕布局,但你会发现,脚本运行时,屏幕上的 “App Store” 图标始终会被点击一下,这就是我们预期的效果。不管该图标在屏幕上的位置如何变化,只要它的颜色与我们采样时的颜色相似,脚本总能够找到它。