屏幕点击器

已存档
HAMI_5335355917 · 24 天前
第 1 条补充
·
24 天前

屏幕连点器

回答

Hamibot AI
1
· 24 天前

Hamibot 提供了多种屏幕点击功能,可以根据控件的文本、位置或图像特征进行点击操作。以下是核心方法和示例:

1. 基于控件的点击 (推荐)

通过识别屏幕上的文本或控件ID进行精准点击。

// 文档地址 https://docs.hamibot.com/
// 点击屏幕上第一个出现的"发送"按钮
click("发送");

// 点击第二个"确定"按钮(序号从0开始)
click("确定", 1);

// 通过控件属性定位(适用于复杂界面)
var btn = text("发送").findOne();
if(btn) btn.click();

2. 基于坐标的点击

直接点击屏幕指定坐标位置(需Android 7.0+):

// 点击坐标(500, 1000)
click(500, 1000);

// 长按坐标(300, 500)
longClick(300, 500);

注意:建议使用setScreenMetrics(width, height)设置基准分辨率,Hamibot会自动在不同设备上缩放坐标。

3. 基于图像识别的点击

通过识别屏幕上的特定图像模式进行点击:

// 截屏并查找特定颜色模式
var img = captureScreen();
var p = images.findMultiColors(img, '#0052CC', [[5,5,'#0052CC']]);
if(p) click(p.x, p.y);

使用建议:

  • 优先选择控件点击:更稳定,不受分辨率影响
  • 处理动态加载:配合waitFor()或循环检测确保控件出现
  • 图标点击:使用布局分析工具获取控件bounds区域进行点击

需要更具体的实现方案可以提供你的使用场景。


补充回答 1

Hamibot 提供多种方式实现屏幕连续点击(连点器)功能。以下是基于控件、坐标或图像的实现方法,适用于自动化任务如游戏挂机、快速操作等。

推荐方法:使用 press() 函数进行高效连续点击

press() 函数专为模拟快速连续操作设计,比循环调用 click() 更高效。适用于需要高速点击的场景(如游戏连点)。

// 文档地址 https://docs.hamibot.com/
// 模拟在坐标(500, 1000)处连续点击10次,每次间隔100毫秒
press(500, 1000, 10, 100);

参数说明

  • x (Number): 点击的 x 坐标。
  • y (Number): 点击的 y 坐标。
  • times (Number): 点击次数,默认为1。
  • duration (Number): 每次点击间的间隔时间(毫秒),默认为0。

替代方法:使用循环调用 click()(简单但较慢)

如果 press() 不可用或需要更自定义的控制,可以用循环实现,但注意点击速度可能较慢。

// 文档地址 https://docs.hamibot.com/
// 在坐标(500, 1000)处连续点击5次,每次间隔200毫秒
for (var i = 0; i < 5; i++) {
    click(500, 1000);
    sleep(200); // 控制点击间隔
}

基于控件的连续点击(更稳定)

通过识别屏幕上的文本或控件来点击,避免坐标变化问题。

// 文档地址 https://docs.hamibot.com/
// 循环点击屏幕上出现的"攻击"按钮10次
for (var i = 0; i < 10; i++) {
    var btn = text("攻击").findOne();
    if (btn) {
        btn.click();
        sleep(150); // 适当间隔以避免过快点击导致失败
    } else {
        toastLog("未找到按钮,停止点击");
        break;
    }
}

高级技巧:结合图像识别进行动态点击

如果界面元素位置变化,使用图像识别定位后点击。

// 文档地址 https://docs.hamibot.com/
// 请求截图权限
auto.waitFor();
if (!requestScreenCapture()) {
    toastLog("没有截图权限");
    hamibot.exit();
}

// 连续点击屏幕上某个图标5次
for (var i = 0; i < 5; i++) {
    var img = captureScreen();
    var p = images.findMultiColors(img, '#FF0000', [[10, 10, '#FFFFFF']]); // 根据颜色模式定位
    if (p) {
        click(p.x, p.y);
        sleep(300);
    } else {
        toastLog("未找到目标,停止点击");
        break;
    }
}

注意事项:

  • 性能优化:高速点击时,使用 press() 避免卡顿;普通场景可用循环 click()
  • 间隔控制:添加 sleep() 避免点击过快被系统拦截或脚本失控。
  • 错误处理:加入条件检查(如查找控件或图像),确保点击目标存在。
  • 设备兼容性:坐标点击需 Android 7.0+,建议先用 setScreenMetrics(width, height) 设置基准分辨率以适应不同屏幕。

如果需要更具体的配置(如点击频率、目标选择),可以提供你的使用场景(如游戏名称或应用),我会给出针对性建议。

ℹ️ 本回答由 AI 生成,内容仅供参考