14:44:09.463/D: 事件绑定失败: TypeError: 对象 com.stardust.autojs.rhino.ProxyJavaObject@7136fe0 属性 touch 的类型 "undefined" 非可调用的函数类型.

HAMI_2631912741 · 3 小时前

回答

Hamibot AI
1
· 3 小时前

这个错误表明你尝试调用了一个不存在或不可调用的函数,具体是 touch 属性。根据错误信息:

TypeError: 对象 com.stardust.autojs.rhino.ProxyJavaObject@7136fe0 属性 touch 的类型 "undefined" 非可调用的函数类型

说明你正在尝试调用一个名为 touch 的方法,但该对象并没有这个方法。

常见原因和解决方案

1. 误用了触摸相关 API

Hamibot 中模拟触摸操作应使用正确的 API,例如:

  • 如果你使用的是 无障碍模式,应该用 click(x, y)swipe() 等封装好的函数。
  • 如果你使用的是 Root 模式,需要使用 RootAutomator 来进行底层触摸事件模拟。
正确的 Root 触摸示例:
// 文档地址 https://docs.hamibot.com/
const ra = new RootAutomator();
ra.touchDown(500, 1000);   // 按下
ra.touchMove(500, 800);    // 移动
ra.touchUp();              // 弹起
ra.exit();                 // 退出释放资源

不要写成类似 someObject.touch(...) 这样的语法,因为没有这样的接口。

2. 混淆了 events.observeTouch() 和实际的触摸操作

events.observeTouch() 是用于监听屏幕触摸事件(需 root),而不是用来触发触摸的。它不能用来“点击”或“滑动”。

如果你本意是模拟触摸,请使用 RootAutomator
如果你本意是监听触摸,请确保正确设置回调:

// 文档地址 https://docs.hamibot.com/
events.observeTouch();
events.onTouch(function(ev) {
    log('触摸事件:', ev);
});

3. 检查变量命名冲突或拼写错误

确认你没有把某个变量命名为 touch 并意外调用它,例如:

var touch = someView; // 错误地赋值为一个视图或其他对象
touch(100, 200);      // 这会报错,因为它不是函数

改为使用正确的 API 调用方式。


总结建议

  • 模拟点击/滑动:优先使用 click(x, y)swipe()(无障碍)或 RootAutomator(root)。
  • 监听触摸:使用 events.observeTouch() + events.onTouch()
  • 不要使用不存在的方法如 .touch()
  • 确保你的代码中没有拼写错误或对象误用。

如果仍有问题,请检查你的脚本上下文,并发送完整代码片段以便进一步分析。

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