2013-02-17 5 views
1

멀티 터치 컨트롤을 만들려고하지만 화면에 표시 할 때 손가락을 다른 시퀀스에서 제거하면 항상 오류가 발생합니다.Android 멀티 터치 컨트롤

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    pointers = event.getPointerCount(); 
    for(int a = 0; a < event.getPointerCount(); a++) { 
     expos[a] = (int) event.getX(event.getPointerId(a)); 
     eypos[a] = (int) event.getY(event.getPointerId(a)); 
    } 
    if(event.getAction() == MotionEvent.ACTION_DOWN) pressed = true; 
    if(event.getAction() == MotionEvent.ACTION_UP) pressed = false; 
    return true; 
} 

제 생각에는 문제의 첫 번째 손가락을 제거하면 두 번째 아이디에는 여전히 ID 2가 있지만 문제를 해결하려면 어떻게해야합니까?

답변

1

제가 알다시피, 문제는 손가락 중 하나를 놓을 때 ACTION_UP 이벤트가 발생하지 않는다는 것입니다. 이에 대한 해결책은 ACTION_POINTER_UP을 사용하는 것입니다. 모든 기본이 아닌 포인터의 릴리스를 감지하고 문제를 해결해야합니다.

+0

하지만 ACTION_POINTER_UP을 사용하면 포인터가 다른 순서로 제거 된 경우에만 알 수 있습니다. 포인터 1을 제거하면 어떻게 포인터 2를 포인터 1로 만들 수 있습니까? – user2080326

+0

이것은 자동으로 수행됩니다. getPointerID를 사용하는 문제 ID이지만 필요하지는 않습니다. 대신 : expos [a] = (int) event.getX (event.getPointerId (a)); 다음과 같이 작성해야합니다. expos [a] = (int) event.getX (a); – vicciu

관련 문제