牙叔教程 简单易学
使用场景
当我们找控件的时候, 代码查找的结果, 可能不符合我们的预期,
这个时候, 最好就把找到的控件的位置, 显示在屏幕上面,
方便我们排查问题
显示位置的方式
可以是一个点, 也可以是一个矩形
效果展示
autojs版本
原理
autojs有悬浮窗功能, 我们在悬浮窗上加一个画板, 画一个矩形,
假设我们的函数叫做showPosition
他应该有两个参数
第一个参数: 显示的位置信息, 可以是矩形, 也可以是一个点
第二个参数: 时间, 悬浮窗显示多久, 我们设置一个默认值2s
代码讲解
1. 函数签名
/**
* @description:显示找到的位置
* @param position {object | array} 位置数据
* @param t {number | null} 悬浮窗显示时长
* @return {boolean | error}
*/
function showPosition(position, t) {...}
// position一共三种格式
// 第一种:
// {
// x:100,
// y:100
// }
// 第二种:
// [100,200,300,400]
// 第三种:
// [100,200]
2. 设置悬浮窗显示时间的默认值
t = t || 2000;
3. 判断参数position类型
// 对象
if (Object.prototype.toString.call(position) === "[object Object]")
// 数组
if (Object.prototype.toString.call(position) === "[object Array]")
// 数组长度
if (position.length === 4) {...}
if (position.length === 2) {...}
4. 提取位置数据
let left = position[0];
let top = position[1];
let right = position[2];
let bottom = position[3];
---或者---
let x = position.x;
let y = position.y;
---或者---
let x = position[0];
let y = position[1];
5. 位置可视化
shwPoint(x, y, t);
showRect(left, top, right, bottom, t);
具体函数
1. 显示矩形
function showRect(left, top, right, bottom, t) {
let obj = getFloatingWindow();
obj.paint.setStrokeWidth(30);
obj.canvas.drawRect(left, top, right, bottom, obj.paint);
releaseResources(obj, t);
}
2. 显示点
function shwPoint(x, y, t) {
let obj = getFloatingWindow();
obj.paint.setStrokeWidth(30);
obj.canvas.drawPoint(x, y, obj.paint);
releaseResources(obj, t);
}
3. 释放资源
function releaseResources(obj, t) {
setTimeout(function () {
obj.window && obj.window.close();
obj.bitmap && obj.bitmap.recycle();
engines.myEngine().forceStop();
}, t);
}
4. 随机颜色
function getRndColor() {
let color = new java.util.Random();
return (randomColor = colors.rgb(color.nextInt(256), color.nextInt(256), color.nextInt(256)));
}
声明
部分内容来自网络
微信公众号 AutoJsPro教程
QQ群
747748653