// 悟空控制平板
auto();
console.log("悟空法力启动");
toast("3秒后开始");
sleep(3000);
// 返回桌面
home();
sleep(1000);
// 点击屏幕中心
click(1280, 800);
sleep(2000);
// 向下滑动
swipe(1280, 1200, 1280, 800, 300);
console.log("完成");
toast("悟空法力施展完毕");
auto.waitFor();
log("打开 QQ");
toast("3秒后打开 QQ");
sleep(3000);
// 返回桌面
home();
sleep(1000);
// 点击 QQ 图标(你的坐标)
click(1280, 800);
log("已点击 QQ");
toast("QQ 已打开");
auto.waitFor();
log("开始刷动态");
toast("3秒后开始刷");
sleep(3000);
// 连续滑动 10 次
for (let i = 0; i < 10; i++) {
swipe(1280, 1200, 1280, 800, 300);
log(第 ${i+1} 次滑动);
sleep(1500);
}
toast("刷完了");
auto.waitFor();
// 模拟业力识别
let karmaType = "恐惧"; // 可以从三界系统获取
if (karmaType == "恐惧") {
toast("检测到恐惧业力,返回桌面冷静一下");
home();
} else if (karmaType == "愿力") {
toast("愿力升起,打开 QQ 传递善意");
click(1280, 800);
}
回答
这段脚本可以实现基础的坐标操作。为了提升稳定性和兼容性,建议进行以下优化:
- 无障碍服务等待:使用
auto.waitFor()代替auto()。auto()在无障碍服务未启动时会直接停止脚本,而auto.waitFor()会等待服务启动后继续运行,避免脚本意外终止。 - 日志输出:推荐使用
log()代替console.log(),以便在 Hamibot 控制台统一查看日志。 - 代码规范:在脚本开头添加文档地址注释,便于维护和查阅。
- 分辨率适配:坐标操作依赖屏幕分辨率,不同设备需要调整坐标值。若需更高兼容性,建议结合
images找图或widgets控件操作。
优化后的代码如下:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
log("悟空法力启动");
toast("3 秒后开始");
sleep(3000);
// 返回桌面
home();
sleep(1000);
// 点击屏幕中心
click(1280, 800);
sleep(2000);
// 向下滑动
swipe(1280, 1200, 1280, 800, 300);
log("完成");
toast("悟空法力施展完毕");
注意:坐标操作在不同分辨率的设备上可能失效,建议在实际运行前确认设备分辨率或使用找图功能替代固定坐标。
补充回答 1
这段脚本逻辑清晰,但在 Hamibot 环境中存在语法兼容性和稳定性风险。Hamibot 使用的 JavaScript 引擎是 Rhino 1.7.15,不完全支持 ES6 语法,且坐标操作受分辨率影响较大。
主要优化建议:
- 语法兼容性:将
let改为var,去除模板字符串(`...${}...`),改用字符串拼接,确保在 Rhino 引擎下稳定运行。 - 应用启动:使用
launchApp代替home()加坐标点击,避免不同设备分辨率导致点击失败。 - 服务等待:
auto.waitFor()只需在脚本开头调用一次,无需重复调用。 - 代码规范:在代码开头添加文档地址注释。
优化后的代码如下:
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
log("打开 QQ");
toast("3 秒后打开 QQ");
sleep(3000);
// 启动 QQ 应用
launchApp("QQ");
sleep(5000);
log("已点击 QQ");
toast("QQ 已打开");
log("开始刷动态");
toast("3 秒后开始刷");
sleep(3000);
// 连续滑动 10 次
var i = 0;
while(i < 10) {
swipe(1280, 1200, 1280, 800, 300);
log("第 " + (i + 1) + " 次滑动");
sleep(1500);
i++;
}
toast("刷完了");
// 模拟业力识别
var karmaType = "恐惧"; // 可以从三界系统获取
if (karmaType == "恐惧") {
toast("检测到恐惧业力,返回桌面冷静一下");
home();
} else if (karmaType == "愿力") {
toast("愿力升起,打开 QQ 传递善意");
// 若需再次打开可调用 launchApp("QQ")
}
注意事项:
- 坐标适配:
swipe和click的坐标基于特定分辨率(如 1920x1080 或 2560x1600)。在不同平板上运行时,需根据实际屏幕尺寸调整坐标值,或使用images.findMultiColors进行找图操作以提高兼容性。 - 权限要求:脚本运行需要授予 Hamibot 无障碍服务权限,
launchApp不需要额外权限,但界面操作依赖无障碍服务。 - 循环语法:使用
while循环配合var是 Rhino 引擎中最稳定的写法,避免使用for (let ...)结构。