2014-04-10 4 views
2

다른 모양의 경계선과 교차 할 때 드래그 된 모양 중단을 드래그 (dragend 동작)하게하려면 어떻게합니까? 이미 충돌 감지를 테스트했습니다. 내가 지금 원하는 것은 을 실제로 멈추는 방법입니다. 움직이는 것은이며, 강제로 떨어 뜨립니다.kinetic에서 충돌이 감지 될 때 힘 드래그

중요 편집 : 모양 그룹을 조작해야하지만 그룹이있는 다른 솔루션이 필요합니다. 어떤 제안?

사실 셰이프에 대한 도움을 얻었으며 그룹과 함께 작동하도록했습니다. 바이올린은 http://jsfiddle.net/PFH55/12/입니다. 콘솔 오류가 발생합니다. 운동이 정의되지 않은 반면 운동이 정의되지 않았습니다.

다른 편집 : 나는 KineticJS에서 그룹의 드래그 가능한 클론에 대해 작업 할 솔루션이 필요합니다. (여기서 한 가지 의미는 원래 레이어를 한 레이어에 드래그하면 두 번째 레이어에만 드롭 할 수있는 복제본을 만듭니다. 충돌 탐지 마법을 사용합니다.

답변

1

방법 stopDrag()은 모든 Node object에 대해 사용 가능합니다. 그래서 충돌 탐지가 발견되면 드래그되는 노드에서이 메소드를 호출하십시오.

이 방법이 도움이됩니까?

업데이트

나는 사각형 충돌 감지 예를 들어 작업 밖으로했다. 특정 조건에서 2 개의 오브젝트와 충돌 할 때 약간 버그가있을 수 있으므로이를 개선 할 수 있습니다. 현재 알고리즘은 또한 모든 객체가 사각형이라고 가정합니다. http://jsfiddle.net/PFH55/19/

doObjectsCollide 기능 새 반환이 충돌하는 모든 객체의 배열 : 여기

는 바이올린입니다. 이것은 dragBoundCarre에서 사용됩니다. 라인 if(collided.length > 1)에 속하는 코드는 두 개 이상의 객체로 충돌 탐지를 조금 더 개선 할 수 있도록 개선 될 수 있습니다.

+0

예! 나는 그 방법에 대해 몰랐다. 고마워! 하지만 이제는 stopDrag()를 호출 한 후 다시 드래그 할 때 동작이 "무거워"집니다./chek this fiddle please http://jsfiddle.net/PFH55/4/ –

+0

stopDrag()를 호출하면), 두 객체는 ​​몇 픽셀 겹쳐 있습니다 (특히 빠른 마우스 움직임에서 발생 함). 다시 드래그하기 시작하면 즉각적인 충돌이 발생하고 stopDrag()가 다시 호출됩니다. 이 문제를 해결하려면 드래그 된 객체의 x 및 y 좌표가 다른 객체와 겹치지 않도록 설정해야합니다. 그걸 위해 몇 가지 지오메트리 수학을 사용해야합니다 :-) 그 도움이 필요하면 알려주세요. – Sjiep

+1

그럼 완벽하게 작동하지 않습니다 (특히 빠른 마우스 동작과 다시 한번 초점이 맞지 않기 때문에). 그러나 충돌 객체를 이전 위치로 되돌릴 수 있습니다. 이 피들 http://jsfiddle.net/PFH55/6/를 참조하십시오. 나는 이것을 최적화 할 여지가 충분하다고 생각하지만 그것은 시작이다. – Sjiep

관련 문제