2010-12-08 8 views
0

화면에 2 차원 배열이 표시되고 터치 위치를 감지하고 터치가있는 타일을 찾고 더 정확하게 r을 제거하는 방법을 구현하기로 결정했습니다. map [x] [y]의 int입니다. 현재 3 차원 15 개 15 개로 구성된 2 차원 맵 배열이 있습니다. 번호를 반올림 할 방법을 찾을 수 없어서 만든 위치와이 메서드를 터치하면 배열의 위치가 계산되고 값이 변경됩니다.Android 터치 이벤트 강제 종료

public boolean onTouchEvent(MotionEvent event) { 

    mX = (int) event.getX(); 
    mY = (int) event.getY(); 
    calculate(); 
    return true; 
} 

public void calculate() { 

    indexX = 0; 
    indexY = 0; 
    for (int n = 32; n < mX; n += 32) { 
     indexX++; 
    } 
    for (int n = 32; n < mY; n += 32) { 
     indexY++; 
    } 
    map[indexY][indexX] = 1; 
} 

나는 화면을 매쉬업 또는 주위에 내 손가락을 드래그 시작하는 경우 가까운 강제 것입니다,하지만 난 하나 하나의 위치를 ​​하나를 터치하면 천천히가 잘 작동합니다. 나는 계산 방법이 터치 이벤트 방법에 있어서는 안된다고 생각했지만 여전히 확실하지 않습니다.

+1

logcat을 붙여주세요. – Cristian

답변

0

이 for 루프는 필요하지 않습니다. 두 개의 정수를 나눌 경우 정수 결과를 얻을 수 있습니다. 2의 거듭 제곱으로 나누기를 원하기 때문에 산술 시프트 연산자를 사용할 수도 있습니다. (컴파일러는 코드에 상관없이 컴파일러가 더 빠르게 선택한다고 생각할 수 있지만 음수 값의 반올림 동작은 다릅니다)

indexX = mX >> 5;

어쨌든 두 가지 작업 만하는 경우 속도가 문제가되지 않아야합니다.

"강제 종료"란 대화 상자가 응답하지 않는 응용 프로그램을 의미합니까?

다른 문제가있는 경우 경계 문제가있을 수 있습니다.

+0

흠, 이상 하네. 내가 생각해 낸 첫 번째 해결책은 당신이 제안한 것처럼 정수로 나눌 수 있지만 작동하지 않았다는 것입니다. 나는 내 전화를 꽂고 에뮬레이터를 돌리거나 그런 종류의 것을 가지고 있었기 때문에 그것이 있었다고 생각한다. 나는 이것을 다시 시도하고 어떤 일이 일어날지를 볼 것입니다. – semajhan

+0

이상한 무엇입니까? –

+0

타이핑을 끝내기 전에 우연히 "enter"를 누르고 코멘트를 제출했습니다. BTW 경계 문제는 무엇을 의미합니까? 나는 다시 내 앱을 돌 봤고 무작위로 점을 만지기 시작하면 정말 빨리 닫는다. – semajhan

관련 문제