Android 与位图和矩形相交/碰撞
我一直在尝试编写代码,当坐标cx/cy与矩形相交时,矩形会改变颜色。这件事把我逼疯了。这是我的矩形代码Android 与位图和矩形相交/碰撞,android,intersect,rect,Android,Intersect,Rect,我一直在尝试编写代码,当坐标cx/cy与矩形相交时,矩形会改变颜色。这件事把我逼疯了。这是我的矩形代码 for(int k = 0; k<=15; k++){ k = k * 55; for(int i=0;i<=9;i++){ i = i*55; bounds.set(left+i,top+k,right+i,bottom+k); paint.setColor(Colo
for(int k = 0; k<=15; k++){
k = k * 55;
for(int i=0;i<=9;i++){
i = i*55;
bounds.set(left+i,top+k,right+i,bottom+k);
paint.setColor(Color.WHITE);
canvas.drawRect(bounds, paint);
if (cx == left || cx == right || cy==top|| cy == bottom){
paint.setColor(Color.DKGRAY);
canvas.drawRect(bounds, paint);
}
i=i/55;
}
k = k/55;
}
for(int k=0;k您是否尝试膨胀矩形,并在相交时更改颜色
请注意,left
、right
、top
和bottom
的值实际上从未更改,因此,如果在循环的第一次迭代中没有触发检查,它将永远不会更改
另外,请注意,在它相交的情况下,它会将颜色设置为DKGRAY,但在下一个循环中将其直接设置为白色。这是您想要的吗
我想你的意思是这样做的。这里,我们将与实际变化的值进行比较
for(int k = 0; k<=15; k++){
k = k * 55;
for(int i=0;i<=9;i++){
i = i*55;
int boundsLeft = left + i;
int boundsTop = top + k;
int boundsRight = right + i;
int boundsBottom = bottom + k;
bounds.set(boundsLeft, boundsTop, boundsRight, boundsBottom);
paint.setColor(Color.WHITE);
canvas.drawRect(bounds, paint);
if (cx == boundsLeft|| cx == boundsRight || cy==boundsTop || cy == boundsBottom ){
paint.setColor(Color.DKGRAY);
canvas.drawRect(bounds, paint);
}
i=i/55;
}
k = k/55;
}
for(int k=0;kfor(int i=0;i=boundsLeft&&cx=boundsTop&&cy)可以像这样使用矩形类:矩形r1=新矩形(x,y,宽度,高度);…if(r1.相交(r2))…我希望它是一个永久的矩形,一个矩形一个矩形地改变。这是一个很好的输入,它现在一行一行或一列一列地运行。如果它向左或向右运行,它会改变颜色。如果它从上到下,它会改变整列的颜色。它会将行的颜色更改为深灰色。
for(int i=0;i<=9;i++){
i = i*55;
int boundsLeft = left + i;
int boundsTop = top + k;
int boundsRight = right + i;
int boundsBottom = bottom + k;
bounds.set(boundsLeft, boundsTop, boundsRight, boundsBottom);
if(boxes[k][i]==0){
paint.setColor(Color.GREEN);
canvas.drawRect(bounds, paint);
}
else{
paint.setColor(Color.DKGRAY);
canvas.drawRect(bounds, paint);
}
if (cx >= boundsLeft && cx <= boundsRight && cy>=boundsTop && cy <= boundsBottom ){
plow.set(boundsLeft, boundsTop, boundsRight, boundsBottom);
paint.setColor(Color.DKGRAY);
canvas.drawRect(plow, paint);
boxes[k][i]=1;
}
i=i/55;
}