gpt4 book ai didi

java - Android 如果矩形包含触摸坐标,则添加到数组中,给出奇怪的输出

转载 作者:行者123 更新时间:2023-12-01 13:38:56 25 4
gpt4 key购买 nike

我正在构建一款游戏,您可以按顺序将手指从一个 block 拖动到下一个 block 。

我需要发生什么:当它们悬停在一个 block 上时,它会将该 block 编号添加到一个数组中,这样我就知道这些 block 被触摸的顺序。它需要从一个 block 拖动到另一个 block ,而不是单击(排序就像 Android 锁屏应用程序一样)。

到目前为止我正在做的事情:使用每个 block 的坐标和尺寸为每个 block 创建一个矩形,然后检查用户的触摸是否在该矩形内,将该 block 编号添加到数组中。

它似乎有效,但它仅适用于按钮 1、2 和 3(只有 1、2 和 3 会添加到数组中)但是如果我将触摸记录到 logcat 和按钮尺寸/坐标,它正在拾取东西,所以我不知道为什么它没有保存信息?

这是代码:

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

x = (int) arg1.getX();
y = (int) arg1.getY();

if(b1R.contains(x,y)){
arr.add("1");
} else if(b2R.contains(x,y)){
arr.add("2");
} else if(b3R.contains(x,y)){
arr.add("3");
} else if(b4R.contains(x,y)){
arr.add("4");
} else if(b5R.contains(x,y)){
arr.add("5");
} else if(b6R.contains(x,y)){
arr.add("6");
} else if(b7R.contains(x,y)){
arr.add("7");
} else if(b8R.contains(x,y)){
arr.add("8");
} else if(b9R.contains(x,y)){
arr.add("9");
}

if(arr.toString() != null){
Log.d("log", arr.toString());
Log.d("x", ""+x);
Log.d("y", ""+y);
}
return false;
}

@Override
public void onWindowFocusChanged (boolean hasFocus){
super.onWindowFocusChanged(hasFocus);
if(hasFocus){
b1R = new Rect(b1.getLeft(), b1.getTop(), b1.getRight(), b1.getBottom());
b2R = new Rect(b2.getLeft(), b2.getTop(), b2.getRight(), b2.getBottom());
b3R = new Rect(b3.getLeft(), b3.getTop(), b3.getRight(), b3.getBottom());
b4R = new Rect(b4.getLeft(), b4.getTop(), b4.getRight(), b4.getBottom());
b5R = new Rect(b5.getLeft(), b5.getTop(), b5.getRight(), b5.getBottom());
b6R = new Rect(b6.getLeft(), b6.getTop(), b6.getRight(), b6.getBottom());
b7R = new Rect(b7.getLeft(), b7.getTop(), b7.getRight(), b7.getBottom());
b8R = new Rect(b8.getLeft(), b8.getTop(), b8.getRight(), b8.getBottom());
b9R = new Rect(b9.getLeft(), b9.getTop(), b9.getRight(), b9.getBottom());
}
}

这是打印到 logcat 的内容:

[1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,3,3,3]

没有其他按钮吗?

请帮忙!

提前致谢!

最佳答案

B1r是什么?您是否应该在某个时候更新此内容以考虑一组新的位置?您正在使用 Else If 语句,这意味着只要

if(b1R.contains(x,y)){

计算结果为 true,您的其他检查都不会执行。

我会确保您没有将 b1r 的边界设置为整个屏幕,或其他一些不正确的(或可能“正确”但具有破坏性的值)。

但是,如果没有更多代码,很难真正调试它。

关于java - Android 如果矩形包含触摸坐标,则添加到数组中,给出奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com