2016-08-12 2 views
1

libGDX 코드 조각을 얻는 데 문제가 있습니다.libGDX를 중심으로 원을 끌기

손가락이 너무 빠르게 움직이면 디스크가 움직이지 않는 것이 문제입니다. 어떻게 든, 디스크는 그것이 보이는 움직임을 따라 잡을만큼 충분히 빨리 번역하지 못합니다. 이것에 대한 이유가 있습니까?

답변

1

코드에서 포인터 (손가락)가있는 디스크를 드래그하는 것이 좋습니다. 포인터가 디스크 안에 있는지 확인하면됩니다.

문제는 마우스 나 손가락으로 움직일 때 포인터가 움직이면 움직이는 방향의 모든 위치를 얻지는 못하지만 일부 지점 만 가져 오게된다는 것입니다.). 포인터는 실제로 움직이는 것보다 "뛰는"것입니다. 예를 들어, 이미지 편집기는 사용자가 브러시를 안내하면이 점들 사이에 단지 선을 그리기 때문에 브러시가 빠르게 움직이면 페인트 선이 더 "각진"것처럼 보입니다.

문제로 돌아 가기 : 처음에 사용자가 디스크를 드래그하려는 것을 확인한 후 부울 플래그를 설정하십시오. 이 플래그가 참 인 동안 포인터가 디스크 외부에 있어도 포인터가 이동하는 모든 위치로 디스크를 이동하십시오. 포인터가 해제 될 때만이 플래그를 false로 재설정하십시오 (onMouseUp 또는 무언가).

그래서 코드를보다 (의사 코드)

if (disc.contains(touchPos.x, touchPos.y)) { 
    dragged = true; 
} 

... 

if (dragged) { 
    disc.x = touchPos.x - disc.radius/2; // disc.x becomes current touch position 
    disc.y = touchPos.y - disc.radius/2; // disc.y becomes current touch position 
} 

... 

public onMouseUp() { 
    dragged = false; 
} 
+0

1과 같을 것이다, 자신이 올바른 접근 방법이다. 나는 또한 [link] (https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/DragListener.html)을 살펴볼 것을 제안한다. –

+0

나는 당신을 +1 할 것이다. , 그러나 나는 유익하고 유익한 대답을 해주신 @ 세바스챤에게 감사 드릴 수 없습니다. 지금 구현하려고합니다! –

관련 문제