2010-07-19 3 views
0

작은 볼 이미지를로드하는 사용자 정의보기를 만들었습니다. 캔버스는 onDraw 방법은 다음과 같을 것이다 그래야 :Android : draggable elastic ball 만들기?

public void onDraw(Canvas canvas) { 
    canvas.drawBitmap(...); 
} 

나중에, 나는 주위를 드래그 할 볼 수 있도록 이벤트를 터치들을 수하는 onTouch 리스너를 추가했습니다. 지금, 나는 공을 만들기 위해 노력하고

public boolean onTouchEvent(MotionEvent event) { 
     int eventaction = event.getAction(); 

     int X = (int)event.getX(); 
     int Y = (int)event.getY(); 

     switch (eventaction) { 

     case MotionEvent.ACTION_MOVE: // touch drag with the ball 
      // move the balls the same as the finger 
      ball.setX(X-25); 
      ball.setY(Y-25); 

      break; 
     } 
     // redraw the canvas 
     invalidate(); 
     return true; 
    } 

은 곡선을 따라 만 이동하고이 고정 점 이상 이동하지 않을 경우, 그것은 원래의 위치로 다시 스윙을합니다.

  1. 를 애니메이션으로 다시 마리 볼
  2. 의 이동 경로를 고정 : 그래서 현재 직면하고 두 가지 문제가있다. ball.startAnimation을 사용하고 공이 약간 초점을 벗어난 경우 공이 얇게 보입니다.

Ball Swing http://www.freeimagehosting.net/uploads/b68d5434ed.png

어떤 제안하십시오?

답변

0

커브는 원의 일부로 나타나며, 중심과 반지름을 가지고 있음을 나타냅니다.

나는 이것이 무엇인지를 결정한 다음, 손가락 위치가 주어지면 커브를 따라 볼이 있어야하는 위치를 반환하는 기능을 작성하는 것이 좋습니다. 이것은 단순히 원의 중심에 비해 손가락의 각도를 결정한 다음이 각도를 사용하여 기본 삼각법을 사용하여 볼을 올바르게 배치해야합니다.

예를 들어 사진에서 공이 0 °이고 마크가 약 20 ° 인 것처럼 보입니다.

그러면 손가락이 특정 지점을 지나쳐야 다시 볼을 내야하는 각도를 결정할 수 있습니다 (다시 원의 중심에서 각도로 설명 됨)