【Auto.js】使用Pro 8.0 API优化图色或无障碍的耗电问题
由于Auto.js目前的API都是同步的,要在屏幕中搜索某张图色或者某个控件时,必须无限循环查找,这实际上非常耗电。由于Rhino的限制,Auto.js无法直接提供异步API,这让Auto.js的脚本天生有一些缺陷。
为了解决这些问题,Auto.js Pro 8.0.0-3引入了两个新的API,来尽量减少图色模块和控件模块使用时的耗电。
图色模块的耗电优化
requestScreenCapture(options)
options
{Object}async
{Boolean} 是否以异步事件的形式提供截图width
{Number} 截图宽度height
{Number}} 截图高度orientation
{String} 屏幕方向,"landscape"
为横屏,"portrai"
为竖屏,"auto"
为自动
请求截图权限的参数中,增加了async
的参数,这个参数运行我们以异步的方式,来获取屏幕截图。在以前,我们通过captureScreen()
函数来获取截图,并无限循环地寻找目标图片,比如:
-
// 请求截图权限
-
requestScreenCapture();
-
// 读取目标图片
-
let target = $images.read("./test.png");
-
while (true) {
-
// 获取屏幕截图
-
let capture = $images.captureScreen();
-
// 找图
-
let pos = $images.findImage(capture, target);
-
// 打印
-
console.log(pos);
-
}
而使用async
参数后,我们可以在"screen_capture"
事件中获取到图片,例如:
-
// 请求截图权限, 注意参数 async: true
-
requestScreenCapture({async: true});
-
// 监听屏幕截图
-
$images.on("screen_capture", capture => {
-
// 找图
-
let pos = $images.findImage(capture, target);
-
// 打印
-
console.log(pos);
-
});
使用这样的方式,我们可以只在屏幕刷新时通过事件screen_capture
唤醒代码,获取到最新的屏幕截图,并寻找目标图片。
实测在普通软件界面的找图中,CPU使用率减少了75%左右。
无障碍功能的耗电优化
与找图找色类似,在以前,Auto.js也一直只能通过无限循环去判断当前界面、寻找控件,这实际上对省电优化十分不友好。在Pro 8.0.0-3版本,我们引入了监听无障碍事件的API。
auto.registerEvents(events)
events
{Array} 要监听的事件数组- 返回 {EventEmitter}
auto.registerEvent(event, callback)
event
{String} 要监听的事件callback
{Function} 事件回调- 返回 {EventEmitter}
以上两个函数用于监听一个或多个无障碍事件。所谓无障碍事件,即(其他软件)窗口发送变化、控件发送变化时的事件,包括:
view_clicked
控件被点击view_long_clicked
控件被长按点击view_selected
控件被选中view_focused
控件成为焦点view_text_changed
控件文本改变view_scrolled
控件被滑动window_state_changed
窗口状态变化window_content_changed
窗口内容变化window_changed
屏幕上显示窗口的变化(增加,删除,子窗口变化等)notification_state_changed
通知状态变化
例如,我们要监听Auto.js的打开,可以用以下代码监听:
-
// 监听窗口变化
-
auto.registerEvent('windows_changed', e => {
-
// 判断是否有新窗口打开
-
if (e.windowChanges.indexOf('add') >= 0) {
-
// 获取新窗口的id
-
let wid = e.windowId;
-
// 遍历窗口,获取新窗口
-
let window = auto.windows.filter(w => w.id == wid);
-
// 判断新窗口是Auto.js
-
if (window.length >= 0 && window[0].title == 'Auto.js') {
-
toast("Auto.js被打开了!");
-
}
-
}
-
});
文章来源: laoshifu.blog.csdn.net,作者:红目香薰,版权归原作者所有,如需转载,请联系作者。
原文链接:laoshifu.blog.csdn.net/article/details/115313705
- 点赞
- 收藏
- 关注作者
评论(0)