function HID_position_click(x) {
if (x) {
var b = x.bounds();
var centerX = b.centerX();
var centerY = b.centerY();

    // 设置随机偏移量,例如在 ±20 像素范围内
    var offset = 20;
    var randomX = parseInt(centerX + Math.random() * (offset * 2) - offset);
    var randomY = parseInt(centerY + Math.random() * (offset * 2) - offset);

    var y = surl; // 确保 surl 已定义
    var Downurl = y + '/hid?cmd=touchDown:' + randomX + ',' + randomY;
    var Upurl = y + '/hid?cmd=touchUp';

    // 执行按下
    http.get(Downurl);

    // 随机等待 20ms 到 50ms
    var randomSleep = parseInt(Math.random() * (50 - 20) + 20);
    sleep(randomSleep);

    // 执行抬起
    http.get(Upurl);

    console.log("执行HID点击: (" + randomX + ", " + randomY + "),持续时间: " + randomSleep + "ms");
}

}
只偏移上,下,左的点击,不向右偏移,怎么更改代码?

crv3yukjc8 · 1 天前
第 1 条补充
·
1 天前

function HID_positionr_click(x) {
if (x) {
var b = x.bounds();
var y = "http://127.0.0.1:8866";
var Downurl = y+'/hid?cmd=touchDown:'+b.right+','+b.centerY()
var Upurl = y +'/hid?cmd=touchUp'
http.get(Downurl);
sleep(50)
http.get(Upurl);
}
}
在这个基础上修改,只偏移上,下,左的点击,不向右偏移。

第 2 条补充
·
1 天前

HID_position_click(s,rampy,“a”);

直接在里括号里面写上具体变量可以吗?不可以的话应该怎么写?

回答

Hamibot AI
1
· 1 天前

文档地址 https://docs.hamibot.com/

function HID_position_click(x) {
    if (x) {
        var b = x.bounds();
        var centerX = b.centerX();
        var centerY = b.centerY();

        // 设置偏移量,只允许上、下、左方向偏移,不允许向右偏移
        var offset = 20;
        // X轴:只在 [-offset, 0] 范围内随机,确保不向右偏移(即不会大于centerX)
        var randomX = parseInt(centerX + Math.random() * (-offset)); // 左移 0~20 像素
        // Y轴:在 ±offset 范围内随机,允许上、下偏移
        var randomY = parseInt(centerY + Math.random() * (offset * 2) - offset);

        var y = surl; // 确保 surl 已定义
        var Downurl = y + '/hid?cmd=touchDown:' + randomX + ',' + randomY;
        var Upurl = y + '/hid?cmd=touchUp';

        // 执行按下
        http.get(Downurl);

        // 随机等待 20ms 到 50ms
        var randomSleep = parseInt(Math.random() * (50 - 20) + 20);
        sleep(randomSleep);

        // 执行抬起
        http.get(Upurl);

        console.log("执行HID点击: (" + randomX + ", " + randomY + "),持续时间: " + randomSleep + "ms");
    }
}

修改说明:

  • 原来的 randomX 是在 centerX ±20 范围内随机,现在改为仅在 centerX - 20centerX 之间随机(即只向左或居中)。
  • 使用 Math.random() * (-offset) 生成一个 -200 的随机偏移量,加到 centerX 上,从而实现 不向右偏移 的效果。
  • Y 轴保持不变,仍可上下偏移。

补充回答 1

文档地址 https://docs.hamibot.com/

function HID_positionr_click(x) {
    if (x) {
        var b = x.bounds();
        var y = "http://127.0.0.1:8866";
        
        // 设置偏移范围
        var offset = 20;

        // X坐标:使用 right 边界作为基准,只向左偏移(不向右),即在 [b.right - offset, b.right] 范围内随机
        var randomX = parseInt(b.right - Math.random() * offset);
        
        // Y坐标:在 centerY 基础上上下偏移,在 [centerY - offset, centerY + offset] 范围内随机
        var randomY = parseInt(b.centerY() + Math.random() * (offset * 2) - offset);

        var Downurl = y + '/hid?cmd=touchDown:' + randomX + ',' + randomY;
        var Upurl = y + '/hid?cmd=touchUp';

        http.get(Downurl);
        sleep(50);
        http.get(Upurl);

        console.log("执行HID点击: (" + randomX + ", " + randomY + ")");
    }
}

修改说明:

  • X轴偏移:以 b.right 为基准,通过 Math.random() * offset 生成 0~20 的随机值,用 b.right - random 实现 仅向左偏移,不会向右超出。
  • Y轴偏移:保持上下随机偏移(±20像素内)。
  • 这样确保点击点始终在元素右侧边缘的 左侧、上方或下方区域,但 不会向右扩展

补充回答 2

文档地址 https://docs.hamibot.com/
不可以这样写,你提供的语法 HID_position_click(s, rampy, "a"); 存在几个问题:

  1. 函数定义与参数不匹配:你调用时传了3个参数 (s, rampy, "a"),但你之前定义的 HID_position_click(x) 函数只接收一个参数 x
  2. 多余的参数会被忽略:JavaScript 中多传的参数不会报错,但无法在函数内使用,除非函数定义中声明了对应形参。
  3. 字符串用的是中文引号“”:代码中使用了中文全角引号 “a”,这会导致语法错误。必须使用英文半角引号 "a"

正确做法

如果你只是想点击某个控件 s,并且使用随机偏移(仅左、上、下),不需要额外参数,那么直接调用即可:

HID_position_click(s);

说明:

  • s 是你要点击的控件(比如通过 text("登录").findOne() 获取)。
  • 函数内部会自动获取它的边界并执行带偏移的点击。
  • 不需要传其他无意义的参数如 rampy"a"

如果你需要扩展功能(例如传入偏移量或URL)

你应该修改函数定义,明确接收所需参数。例如:

// 修改后的函数定义:支持自定义偏移量和服务器地址
function HID_position_click(view, offset, serverUrl) {
    if (!view) return;
    
    var b = view.bounds();
    var centerX = b.centerX();
    var centerY = b.centerY();

    // 默认值处理
    offset = offset || 20;         // 默认偏移20像素
    serverUrl = serverUrl || "http://127.0.0.1:8866";

    // X: 只向左偏移(从 centerX 开始向左最多 offset 像素)
    var randomX = parseInt(centerX - Math.random() * offset);
    // Y: 上下偏移
    var randomY = parseInt(centerY + Math.random() * (offset * 2) - offset);

    var downUrl = serverUrl + '/hid?cmd=touchDown:' + randomX + ',' + randomY;
    var upUrl = serverUrl + '/hid?cmd=touchUp';

    http.get(downUrl);
    sleep(50);
    http.get(upUrl);

    console.log("执行HID点击: (" + randomX + ", " + randomY + ")");
}

调用方式示例:

// 使用默认偏移和默认地址
HID_position_click(s);

// 自定义偏移为10像素,自定义服务器地址
HID_position_click(s, 10, "http://192.168.1.100:8866");

总结

  • ✅ 正确写法是:HID_position_click(s);
  • ❌ 错误写法:HID_position_click(s, rampy, “a”);(参数不匹配 + 中文引号)
  • ✅ 如需传参,请在函数定义中声明,并使用英文引号。

确保你的函数调用与其定义一致,并且参数有意义。

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