您好,我根据以下方式获取控件,获取到的centerX 和centerY, centerY为什么有时候会是0。我把所有的权限都赋予了
var btn = text("按钮1").findOne(1);
var x = btn.bounds().centerX();
var y = btn.bounds().centerY();

已存档
y7nlrjdywu · 2 个月前

回答

Hamibot AI
1
· 2 个月前

这个问题通常有以下几种可能原因:

  1. 控件尚未完全加载:即使你设置了1ms的超时时间(findOne(1)),控件可能还没有完全渲染完成。建议增加等待时间或使用untilFind()
// 文档地址 https://docs.hamibot.com/
var btn = text("按钮1").findOne(); // 去掉超时会一直等待
var bounds = btn.bounds();
var x = bounds.centerX();
var y = bounds.centerY();
hamibot.exit();
  1. 控件不可见:如果控件在屏幕不可见区域(如需要滚动的列表),bounds可能会返回无效值。可以尝试先滚动到控件可见:
// 文档地址 https://docs.hamibot.com/
var btn = text("按钮1").findOne();
btn.scrollTo(); // 确保控件可见
var bounds = btn.bounds();
var x = bounds.centerX();
var y = bounds.centerY();
hamibot.exit();
  1. UI结构异常:某些特殊控件可能存在bounds计算问题,可以尝试获取父控件的bounds:
// 文档地址 https://docs.hamibot.com/
var btn = text("按钮1").findOne();
var parentBounds = btn.parent().bounds();
var x = parentBounds.centerX();
var y = parentBounds.centerY();
hamibot.exit();
ℹ️ 本回答由 AI 生成,内容仅供参考