Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android碰撞检测?_Java_Android_Imageview_Collision - Fatal编程技术网

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”块来实际恢复可见性!