일단 내가 DragManager.acceptDrag
을 호출했다면 드래그를 "허용하지 않는"방법이 있습니까? 드래그 앤 드롭을 허용 할 수있는 뷰가 있지만 특정 영역에서만 볼 수 있습니다. 사용자가이 영역들 중 하나를 드래그하면 (DragEvent.DRAG_OVER
핸들러에서)이라고하지만, 사용자가이 영역 밖으로 이동하면 허용되지 않는 드래그 상태를 변경하고 DragManager.NONE
피드백을 표시하고 싶습니다. 그러나 DragManager.acceptDrag(null)
이나 DragManager.showFeedback(DragManager.NONE)
을 호출해도 아무런 효과가 없습니다. 일단 드래그를 받아 들인 후에는 피드백 유형을 변경하지 못했습니다.어떻게 Flex에서 드래그를 "수락"할 수 있습니까?
사용자가 드롭 할 수 있어야하는 영역은 구성 요소가 아니거나 심지어 개체를 표시하는 영역이 아니라 실제로 선택 영역과 같은 텍스트 필드의 범위입니다. 그들이 자신의 구성 요소 였다면 각자가 드래그 이벤트를 개별적으로 받아들임으로써 해결할 수있었습니다. 나는 그것을 에뮬레이트하기 위해 텍스트 위로 떠 다니는 프록시 구성 요소를 만들 수 있다고 생각하지만 필요하지 않은 경우에는 그렇지 않을 것입니다.
나는 지금 AIR 브라우저 모두에서 작동하지만 당신이 일을 드롭 할 수 있어야 텍스트의 범위의 상단에 프록시 구성 요소를 넣어 얻을 관리했습니다. 그렇게하면 올바른 피드백을 얻을 수 있고 드랍스는 드래그 종료시 자동으로 수용되지 않습니다. 브라우저 기반의 플렉스에서
DragManager.doDrag(initiator, source, event, dragImage, offsetX, offsetY);
이 offsetX
및 offsetY
부정적인해야한다 (그래서 설명서를 말한다, 그리고 그것을 잘 작동) :
이 AIR에서 D & D에 대한 이상한 일이다. 그러나 을 AIR에서 정확히 동일한 코드으로 실행하면 오프셋을 양수로 만들어야합니다. 같은 숫자지만 긍정적입니다. 그것은 매우 이상합니다.
좀 더 무엇 @maclema 작품을 테스트했습니다,하지만 당신은 AIR에서 실행되지 않은 경우. AIR의 드래그 앤 드롭이 다른 것처럼 보입니다. 정말 피드백이 제대로 보이지 않을뿐 아니라 받아 들여지지 않을 수도 있기 때문에 정말 이상합니다. 좌표도 완전히 벗어납니다. 방금 AIR 대신 브라우저에서 응용 프로그램을 시도하고 끌어서 놓기가 완전히 해제되었습니다.
또한 dragEnter
처리기를 건너 뛰어도 AIR에서는 제대로 작동하지만 브라우저에서 실행될 때 모든 기능이 중단됩니다.
단지 상황을 악화 있습니다. 드래그를 거부 할 수 없습니다 (DragManager.acceptDragDrop (null) 호출은 효과가 없습니다. 최소한 눈에 보이는 결과는 없습니다). 그리고 Enter 키를 눌러 드래그를 허용하면 내가 가지고있는 작은 컨트롤이 제거됩니다. 사용자가 특수 영역을 드래그했을 때 표시하기 시작하는 대신 마우스가 구성 요소에 들어가 자마자 포인터 아래의 +가 표시됩니다. – Theo
글쎄, 초보자도 대상으로 만들 것이고, 사용자가 그 구성 요소 위로 드래그하면 + 표시가 나타납니다 (드롭을 허용하지 않기 때문에 분명히해서는 안됩니다). 그래서 그것도 작동하지 않습니다. – Theo