2014-07-25 4 views
0

이미 ImageView가 화면에 있지만 충돌 감지를 위해 사각형 주위에 넣고 싶습니다. 나는 이것을 시도했다 :안드로이드에서 사각형으로 이미지 푸팅

public void onDraw(Canvas canvas) { 
     int[] l = new int[2]; 
      playerimage.getLocationOnScreen(l); 
      int xxx = l[0]; 
      int yyy = l[1]; 
      int w = playerimage.getWidth(); 
      int h = playerimage.getHeight(); 
      int[] ll = new int[2]; 
      brickimg.getLocationOnScreen(l); 
      int xxxx = l[0]; 
      int yyyy = l[1]; 
      int ww = playerimage.getWidth(); 
      int hh = playerimage.getHeight(); 
     paint.setColor(Color.BLACK); 
     paint.setStrokeWidth(3); 
     canvas.drawRect(xxx, yyy, w, h, paint); 
     paint.setStrokeWidth(0); 
     paint.setColor(Color.BLACK); 
     canvas.drawRect(xxxx, yyyy, ww, hh, paint); 

그러나 그것은 직사각형을 만들지 않는다. 이미지 주위에 사각형을 넣는 다른 방법이 있습니까? 나는 충돌 탐지를 위해 그것을하려고 노력하고있다.

+0

1. 캔버스의 인스턴스가 실제로 화면의 크기가 아닌가요? IE. 사각형을 그리려고하는 것과 동일한 캔버스에 플레이어/벽돌을 그리는 중입니까? 2. 캔버스 그리기는 창 캔버스 좌표가 아닌 로컬 캔버스 좌표를 기준으로 이루어 지므로 캔버스 뷰의 경계 밖으로 벗어날 가능성이 큽니다. 3. 변수를 더 잘 명명하는 것이 좋습니다. 읽는 것은 터무니 없습니다. – Guardanis

답변

0

이 기능을 시도 할 수 찾고있는 것입니다.

public boolean collision(ImageView a, ImageView b){ 
    float bl = a.getY(); 
    float bt = a.getX(); 
    float br = a.getWidth() + bl; 
    float bb = a.getHeight() + bt; 
    float pl = b.getY(); 
    float pt = b.getX(); 
    float pr = b.getWidth() + pl; 
    float pb = b.getHeight() + pt; 
    if (bl <= pr && bl >= pl && bt >= pt && bt <= pb) { 
     return true; 

    } else if (br >= pl && br <= pr && bb >= pt && bb <= pb) { 
     return true; 
    } else if (bt <= pb && bt >= pt && br >= pl && br <= pr) { 
     return true; 
    } else if (bb >= pt && bb <= pb && bl >= pl && bl <= pr) { 
     return true; 
    } 
    return false; 
} 
관련 문제