问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Auto.js获取坐标的方法与实战技巧

创作时间:
作者:
@小白创作中心

Auto.js获取坐标的方法与实战技巧

引用
1
来源
1.
https://docs.pingcode.com/baike/2487584

在自动化脚本开发中,获取屏幕坐标是一个基础且重要的功能。本文将详细介绍在Auto.js中获取坐标的多种方法,包括使用代码获取、手动点击获取和结合图像识别技术。通过这些方法,你可以实现各种自动化操作,提高工作效率。

一、使用代码获取坐标

在自动化操作中,使用代码获取坐标是最常见的方法。Auto.js提供了多种API供开发者使用,使得获取屏幕坐标变得简单而高效。

1、使用getBounds()方法

getBounds()方法可以获取UI元素的边界坐标。通过这个方法,你可以轻松获取UI元素的位置和大小,从而实现自动化点击、滑动等操作。

// 获取某个UI元素的边界坐标
var button = text("确定").findOne();
var bounds = button.bounds();
log("按钮的左上角坐标: (" + bounds.left + ", " + bounds.top + ")");
log("按钮的右下角坐标: (" + bounds.right + ", " + bounds.bottom + ")");

在这个示例中,我们通过text("确定").findOne()找到一个文本为“确定”的按钮,然后使用bounds()方法获取它的边界坐标。这样你就可以知道按钮的具体位置,从而进行下一步的操作。

2、使用click(x, y)方法

click(x, y)方法可以直接点击屏幕上的某个位置。这种方法通常用于已经知道坐标的情况,比如通过前面的getBounds()方法获取的坐标。

// 点击屏幕上的某个位置
click(100, 200);

这种方法非常直接,只要你知道目标位置的坐标,就可以立即进行点击操作。

二、手动点击获取坐标

除了使用代码获取坐标外,手动点击获取也是一个有效的方法。通过Auto.js提供的悬浮窗功能,你可以手动点击屏幕上的某个位置,然后获取该位置的坐标。

1、开启悬浮窗

Auto.js提供了悬浮窗功能,通过这个功能你可以轻松获取屏幕上的坐标。首先,你需要开启悬浮窗权限。

// 开启悬浮窗权限
if (!floaty.checkPermission()) {
    floaty.requestPermission();
}

2、手动点击获取坐标

开启悬浮窗后,你可以手动点击屏幕上的某个位置,然后在悬浮窗中显示该位置的坐标。

// 创建悬浮窗
var window = floaty.window(
    <frame>
        <button id="action" text="获取坐标"/>
    </frame>
);
window.setPosition(100, 100);
// 点击按钮获取坐标
window.action.click(() => {
    var x = device.width / 2;
    var y = device.height / 2;
    toast("坐标: (" + x + ", " + y + ")");
});

在这个示例中,我们创建了一个悬浮窗,并在点击按钮时显示屏幕中心的坐标。你可以根据需要调整代码,获取任意位置的坐标。

三、结合图像识别技术

结合图像识别技术,你可以更加智能地获取坐标。Auto.js支持多种图像识别技术,比如OCR(光学字符识别)和模板匹配,通过这些技术你可以更加精确地获取坐标。

1、使用OCR技术

OCR技术可以识别屏幕上的文字,并返回文字的位置。通过这种技术,你可以精准获取文字的坐标。

// 使用OCR技术识别屏幕上的文字
var img = captureScreen();
var results = ocr.recognizeText(img);
results.forEach(result => {
    log("文字: " + result.text + ", 坐标: (" + result.bounds.left + ", " + result.bounds.top + ")");
});

在这个示例中,我们首先截取屏幕,然后使用OCR技术识别屏幕上的文字,并打印每个文字的位置。

2、使用模板匹配技术

模板匹配是一种常用的图像识别技术,通过匹配模板图像在屏幕中的位置,你可以获取目标位置的坐标。

// 使用模板匹配技术识别屏幕上的图像
var img = captureScreen();
var template = images.read("/sdcard/template.png");
var point = findImage(img, template);
if (point) {
    log("模板图像的坐标: (" + point.x + ", " + point.y + ")");
} else {
    log("未找到模板图像");
}

在这个示例中,我们首先截取屏幕,然后读取模板图像,并使用findImage()方法在屏幕中查找模板图像的位置。如果找到模板图像,就打印其坐标。

四、实用案例

在实际应用中,结合上述方法,你可以实现许多实用的自动化操作。以下是几个常见的应用案例:

1、自动化表单填写

通过获取输入框和按钮的坐标,你可以自动化填写表单,并提交表单。

// 自动化填写表单
var nameField = text("姓名").findOne();
var nameBounds = nameField.bounds();
click(nameBounds.left, nameBounds.top);
setText("张三");
var submitButton = text("提交").findOne();
var submitBounds = submitButton.bounds();
click(submitBounds.left, submitBounds.top);

2、自动化游戏操作

在游戏中,通过获取按钮和道具的坐标,你可以实现自动化操作,比如自动点击按钮、自动捡起道具等。

// 自动化游戏操作
var actionButton = text("攻击").findOne();
var actionBounds = actionButton.bounds();
click(actionBounds.left, actionBounds.top);

3、自动化数据采集

通过结合OCR技术,你可以自动化采集屏幕上的数据,并进行处理。

// 自动化数据采集
var img = captureScreen();
var results = ocr.recognizeText(img);
results.forEach(result => {
    log("采集到的数据: " + result.text);
});

在这些应用案例中,使用代码获取坐标、手动点击获取坐标以及结合图像识别技术,你可以轻松实现各种自动化操作,提高工作效率。

五、常见问题及解决方法

在使用Auto.js获取坐标的过程中,可能会遇到一些常见问题。以下是几个常见问题及其解决方法:

1、坐标不准确

有时候获取的坐标可能不准确,导致自动化操作失败。解决这个问题的方法包括:

  • 校准屏幕:确保屏幕分辨率设置正确。
  • 使用多次尝试:通过多次尝试获取坐标,提高准确性。
  • 结合其他技术:结合OCR或模板匹配技术,提高坐标获取的准确性。

2、权限问题

Auto.js需要一定的权限才能正常工作,比如悬浮窗权限和无障碍服务权限。如果权限不足,可能会导致坐标获取失败。解决方法包括:

  • 检查权限:确保已经授予必要的权限。
  • 请求权限:通过代码请求必要的权限。
// 检查和请求悬浮窗权限
if (!floaty.checkPermission()) {
    floaty.requestPermission();
}
// 检查和请求无障碍服务权限
if (!auto.service) {
    toast("请开启无障碍服务");
    auto.waitFor();
}

3、设备兼容性问题

不同的设备可能有不同的分辨率和屏幕尺寸,导致坐标获取不一致。解决方法包括:

  • 适配不同设备:通过代码适配不同的分辨率和屏幕尺寸。
  • 使用相对坐标:使用相对坐标代替绝对坐标,提高兼容性。
// 使用相对坐标
var x = device.width * 0.5;
var y = device.height * 0.5;
click(x, y);

通过以上方法,你可以有效解决在使用Auto.js获取坐标过程中遇到的常见问题,提高自动化操作的稳定性和准确性。

六、进阶技巧

在掌握了基本方法后,你还可以通过一些进阶技巧,进一步提升自动化操作的效率和效果。

1、结合事件监听

通过事件监听,你可以实时获取坐标,并根据事件触发自动化操作。

// 监听屏幕点击事件
events.observeTouch();
events.on("touch", (p) => {
    log("屏幕被点击: (" + p.x + ", " + p.y + ")");
});

2、使用多线程

通过多线程技术,你可以同时进行多个自动化操作,提高效率。

// 使用多线程
threads.start(function() {
    var img = captureScreen();
    var results = ocr.recognizeText(img);
    results.forEach(result => {
        log("识别到的文字: " + result.text);
    });
});

3、优化代码结构

通过优化代码结构,你可以提高代码的可读性和维护性。

// 优化代码结构
function getCoordinates(element) {
    var bounds = element.bounds();
    return { x: bounds.left, y: bounds.top };
}
function clickElement(element) {
    var coords = getCoordinates(element);
    click(coords.x, coords.y);
}
var submitButton = text("提交").findOne();
clickElement(submitButton);

通过这些进阶技巧,你可以进一步提升Auto.js自动化操作的效率和效果,实现更加复杂和智能的自动化任务。无论是初学者还是高级用户,都可以通过这些方法和技巧,实现高效的自动化操作。

七、总结

Auto.js获取坐标的方法包括使用代码获取、手动点击获取以及结合图像识别技术。通过这些方法,你可以实现各种自动化操作,提高工作效率。在实际应用中,结合具体场景,你可以灵活运用这些方法,实现自动化表单填写、游戏操作和数据采集等任务。同时,通过解决常见问题和掌握进阶技巧,你可以进一步提升自动化操作的稳定性和准确性。无论是初学者还是高级用户,都可以通过这些方法和技巧,实现高效的自动化操作。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号