Java Rect.intersects不工作

Java Rect.intersects不工作,java,android,Java,Android,我有一个由x,y,x2,y2值定义的矩形的ArrayList,还有一个在屏幕上移动的矩形,应该与ArrayList中的矩形相交。然而,当矩形相交时,什么也没有发生。以下是我的相关代码: public static ArrayList<Rect> rectangles = new ArrayList<Rect>(100); public static ArrayList<Rect> rectangles2 = new ArrayList<Rect>

我有一个由x,y,x2,y2值定义的矩形的ArrayList,还有一个在屏幕上移动的矩形,应该与ArrayList中的矩形相交。然而,当矩形相交时,什么也没有发生。以下是我的相关代码:

public static ArrayList<Rect> rectangles = new ArrayList<Rect>(100);

 public static ArrayList<Rect> rectangles2 = new ArrayList<Rect>(90);

public static Rect intersected = new Rect();



 int bar_x = 32;

int bar_y = 653;

 int bar_x2 = 183;

 int bar_y2 = 648;

 int BarSpeed = 2;

Rect bar;

Paint paint;



public GameScreen(Game game) {

super(game);




// Initialize game objects here




  bar = new Rect();

 bar.set(bar_x, bar_y, bar_x2, bar_y2);

rectangles.add(new Rect(135,614,160,588));

    rectangles.add(new Rect(124,541,147,512));
for (Rect rect : rectangles) {

   if(Rect.intersects(bar, rect)) {

       Log.d("GameScreen", "intersected");

    intersected = rect;

    checkButtons();




  }

}



if (BarisMoving) {




  bar_y -= BarSpeed;

  bar_y2 -=BarSpeed;

  bar.set(bar_x, bar_y, bar_x2, bar_y2);

 }

}




private void checkButtons() {

 Log.d("GameScreen","Note and Bar Intersected");



KeyButton keybutton = new KeyButton();



  if (B1Pressed == keybutton.getB1() && B2Pressed == keybutton.getB2() && B3Pressed == keybutton.getB3()) {

      Log.i("GameScreenTest", "Correct");

      score++;

  } else {

      Log.i("GameScreenTest - Result", "Wrong");

      Log.i("GameScreenTest - Button Pressed", Boolean.toString(B1Pressed));

      Log.i("GameScreenTest - Button Required", Boolean.toString(keybutton.getB1()));

  }

}
公共静态ArrayList矩形=新ArrayList(100);
公共静态ArrayList矩形2=新ArrayList(90);
公共静态Rect intersected=new Rect();
int bar_x=32;
int bar_y=653;
int bar_x2=183;
整数巴_y2=648;
int-BarSpeed=2;
矩形条;
油漆;
公共游戏屏幕(游戏){
超级(游戏);
//在这里初始化游戏对象
bar=新的Rect();
设置(条x、条y、条x2、条y2);
添加(新矩形(135614160588));
添加(新矩形(124541147512));
用于(矩形:矩形){
if(直线相交(条形,直线)){
Log.d(“游戏屏幕”、“交叉”);
相交=矩形;
选中按钮();
}
}
如果(烟雾){
bar_y-=巴速;
巴_y2-=巴速;
设置(条x、条y、条x2、条y2);
}
}
私有无效复选按钮(){
Log.d(“游戏屏幕”、“注释和横条相交”);
KeyButton KeyButton=新的KeyButton();
如果(B1Pressed==keybutton.getB1()&&B2Pressed==keybutton.getB2()&&B3Pressed==keybutton.getB3()){
Log.i(“游戏屏幕测试”,“正确”);
分数++;
}否则{
Log.i(“游戏屏幕测试-结果”,“错误”);
Log.i(“GameScreenTest-按钮按下”,Boolean.toString(B1Pressed));
Log.i(“GameScreenTest-需要按钮”,Boolean.toString(keybutton.getB1());
}
}

在我的日志中,“intersected”没有被写入。如何使矩形相交?

取(左、上、右、下)。看起来你在传球(左、上、宽、高)。将它们更改为(左+宽)和(顶+高),您应该会得到更好的结果。

这听起来像是一个无关的问题,因此我建议您检查堆栈跟踪中的行,查看访问无效元素的位置。