Java Rect.intersects不工作
我有一个由x,y,x2,y2值定义的矩形的ArrayList,还有一个在屏幕上移动的矩形,应该与ArrayList中的矩形相交。然而,当矩形相交时,什么也没有发生。以下是我的相关代码: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>
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”没有被写入。如何使矩形相交?取(左、上、右、下)。看起来你在传球(左、上、宽、高)。将它们更改为(左+宽)和(顶+高),您应该会得到更好的结果。这听起来像是一个无关的问题,因此我建议您检查堆栈跟踪中的行,查看访问无效元素的位置。