有人想解释这个吗?
public Overlay hitTest(float x, float y) {
boolean hit = x >= bounds.left && x <= bounds.right
&& y >= bounds.top && y <= bounds.bottom;
Log.d(DEBUG_TAG, getId() + (hit ? "" : " not ") + " hit");
if (hit) return this;
return null;
}
这总是返回null。即使hit
是true
。 Logcat会准确打印出被击中但未击中的项目对象。真的挠我的头......
我必须做一些非常暗淡的事情,但我无法弄清楚是什么。如果已经有一个话题,我很抱歉,但这是一个令人惊讶的搜索主题。
答案 0 :(得分:0)
Log.d调用中的某些内容可能是踩到堆栈(也就是粉碎堆栈)并将命中设置为false。我编写了Java代码,它踩到了堆栈,并且有类似的难以调试的问题。
答案 1 :(得分:0)
第二行逻辑不是倒置了吗?
&& y >= bounds.top && y <= bounds.bottom;
在我看来,该行应如下所示
&& y <= bounds.top && y >= bounds.bottom;
答案 2 :(得分:0)
这是Android Studio如何移动调试光标的问题。逻辑是正确的。