Java Android碰撞检测?
以下是我用于移动图像视图的代码:Java Android碰撞检测?,java,android,imageview,collision,Java,Android,Imageview,Collision,以下是我用于移动图像视图的代码: int x=brickimg.getRight()-brickimg.getLeft(); int y=brickimg.getBottom()-brickimg.getTop(); final TranslateAnimation translate = new TranslateAnimation( Animation.ABSOLUTE,x1, Animation.ABSOLUTE, -2000, An
int x=brickimg.getRight()-brickimg.getLeft();
int y=brickimg.getBottom()-brickimg.getTop();
final TranslateAnimation translate = new TranslateAnimation(
Animation.ABSOLUTE,x1, Animation.ABSOLUTE,
-2000, Animation.ABSOLUTE,0,
Animation.ABSOLUTE,y);
translate.setDuration(1200);//speed of the animation
translate.setFillEnabled(true);
translate.setFillAfter(true);
//brickimg.startAnimation(translate);
//2nd brick animation
int x1=brickimg2.getRight()-brickimg2.getLeft();
int y1=brickimg2.getBottom()-brickimg2.getTop();
final TranslateAnimation secondone = new TranslateAnimation(
Animation.ABSOLUTE,x1, Animation.ABSOLUTE,
-2000, Animation.ABSOLUTE,0,
Animation.ABSOLUTE,y1);
secondone.setDuration(1200);//speed of the animation
secondone.setFillEnabled(true);
secondone.setFillAfter(true);
这是两张图片。以下是我尝试用于碰撞检测的代码:
Rect rc1 = new Rect();
brickimg.getDrawingRect(rc1);
Rect rc2 = new Rect();
playerimage.getDrawingRect(rc2);
if (rc1.intersect( rc2)) {
playerimage.setVisibility(View.GONE);
}
然而,唯一发生的事情是,当应用程序启动时,playerimage变为不可见。它再也看不见了。其中一个图像不移动,另一个图像在屏幕上向不移动的图像移动(使用上面的代码)。不移动的图像会立即变为不可见,而不是在第二个图像接触它时。我试着让它在接触运动图像时做点什么。除此之外,我也尝试过.getHitRect,我也尝试过.intersects而不是.intersect,但都不起作用。运动图像是图像视图,而不是精灵。还有其他选项吗?在第一个翻译定义中,您传递的是“x1”而不是“x”。我希望它抛出一个错误,因为它看起来还没有被定义(除非你正在定义它)。。。这就是你在程序中使用的代码吗?哇,我都没注意到。x1是一个用于程序另一部分的变量,我并没有发布它(它和冲突无关)。谢谢你指出这一点!(我认为它没有显示任何错误,因为x1已经被定义为一个变量)没问题,希望有帮助!您的代码只有一行代码可以删除图像的可见性,但您不知何故认为,当图像不再相交时,代码应该神奇地恢复可见性。代码不是魔法,如果你想在它们不再相交时恢复可见性,你需要添加一个“else”块来实际恢复可见性!