回答
以下是实现查找屏幕图片并点击的完整代码示例。代码已适配 Hamibot 的 JavaScript 运行环境(Rhino 1.7.15),并包含了必要的权限申请和错误处理。
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
// 申请屏幕截图权限
if (!requestScreenCapture()) {
toastLog('没有授予 Hamibot 屏幕截图权限');
hamibot.exit();
}
// 等待权限生效
sleep(1000);
// 读取本地模板图片
var imagePath = '/storage/emulated/0/装备图片/戒子.png';
var templ = images.read(imagePath);
// 判断图片是否加载成功
if (!templ) {
toastLog('图片加载失败,请检查路径是否正确:' + imagePath);
hamibot.exit();
}
// 截取当前屏幕
var img = captureScreen();
// 在屏幕图片中查找模板图片
// threshold 为相似度,默认 0.9,如果找不到可以适当调低,例如 0.8
var p = images.findImage(img, templ, {
threshold: 0.9
});
if (p) {
toastLog('找到图片,坐标:' + p.x + ', ' + p.y);
// 点击找到的位置
click(p.x, p.y);
} else {
toastLog('未在屏幕上找到图片');
}
// 释放资源并结束脚本
templ.recycle();
img.recycle();
hamibot.exit();
代码说明与注意事项
- 权限申请:
requestScreenCapture()用于请求屏幕截图权限,首次运行脚本时手机会弹出授权提示,必须允许才能继续。 - 图片路径:代码中使用了你提供的路径
/storage/emulated/0/装备图片/戒子.png。请确保手机该路径下确实存在该文件,且文件名完全一致(包括扩展名)。注意“戒子”是否为“戒指”的笔误,请核对实际文件名。 - 相似度阈值:
images.findImage的threshold参数控制匹配相似度,范围 0 到 1。默认 0.9 较高,如果游戏或应用界面有轻微变色或压缩,可尝试降低至 0.8。 - 资源释放:使用
recycle()方法释放图片占用内存,避免长时间运行脚本导致内存溢出。 - 兼容性:代码使用
var定义变量,未使用箭头函数,符合 Hamibot 底层 JavaScript 引擎规范。
如果脚本运行后提示图片加载失败,请检查文件管理器确认路径和文件名是否正确。如果提示找不到图片,可以尝试调整 threshold 参数或重新截取更清晰的模板图。
ℹ️ 本回答由 AI 生成,内容仅供参考