2010-07-01 1 views
1

터치 및 관련 이동을 등록하려면 Android onTouchEvent를 사용하고 있습니다. 그런 다음 해당 경로를 따라 스프라이트를 반복합니다.마지막 요소 데이터로 채워진 Android ArrayList

나중에 사용할 수 있도록 손가락으로 추적 한 경로를 저장해야합니다.

문제는 손가락을 화면에서 들어 올린 후 ArrayList (pArray)가 AC 012_ 좌표로 X & Y 위치로 완전히 채워진다는 것입니다.

로그에서 나는 손가락이 움직이는 동안 Arraylist에게 현재 X & Y 위치를 추가하고있는 것을 볼 수 있지만 Arraylist는 Arraylist.size() - 1의 데이터로 덮어 씁니다.

누군가 제안 할 수 있습니까?

public boolean onTouchEvent(MotionEvent event) { 

    synchronized (mHeartbeat.getSurfaceHolder()) { 

    getXX = event.getX(); 
    getYY = event.getY(); 

    pathArr.setX(getXX); 
    pathArr.setY(getYY); 

    pArray.add(pathArr); 

    if (event.getAction() == MotionEvent.ACTION_DOWN) { 

    } else if(event.getAction() == MotionEvent.ACTION_MOVE) { 

    } else if(event.getAction() == MotionEvent.ACTION_UP) { 

    } 

    return true; 
    } 
} 

답변

0

새로운 pathArr 변수를 생성하지 않고 매번 동일한 변수를 배열에 추가하기 때문입니다. 또한 인스턴스 필드 인 것처럼 보입니다. 이를 로컬 변수로 변경하고 각 이벤트에 대해 새 변수를 작성해야합니다.

+0

고맙습니다. 작동합니다. 아직도 pathArr의 내용을 덮어 쓸 때마다 혼란스러워서 배열로 복사하고 새로운 경로를 만들지 않을 것입니다. 메모리를 그냥 먹는다고? – Matt