Theo
그는 물었다 12년 전
5

Unaccept&quot &quot 어떻게 해야 합니까;; flex 는 드래그합니다?

39, ve, code&gt DragManager.acceptDrag&lt /code&gt &lt 불렀으매 I& 한 번,, unaccept&quot &quot 방법은 없나;; 이 드래그합니다? I have a 받아들일 수 있다고 볼 수 있는 끌어놓기 아니라, 일정 부분. 한 번 이상의 사용자가 이러한 부분에 &lt code&gt 드래그만거스카스파트드래그 (이) 에 전화해서 드래그 &lt /code>;;; (from a &lt code&gt DragEvent.DRAG_OVER&lt /code>;;; 하지만 사용자가 이동 후 이 지역은 I& 아웃해야 처리기에서), d # 39 와 같은 상태를 변경할 수 없는 드래그합니다 수락됨 및 표시, code&gt &lt DragManager.NONE&lt /code>;; 피드백. 그러나 둘 다 &lt 호출하십시오 code&gt 드래그만거스카스파트드래그 (null) &lt /code>;;; disk_b_s10database &lt code&gt 드래그만거스쇼페드백 (드래그만거그노네), &lt /code>;; 효력은 것으로 보인다. # 39 를 한 후, ve 수락됨 I& 드래그합니다 피드백 type I can& 바꾸라고요 t # 39 설정되었습니다 것으로 보인다.

그냥 쉽게 선택해제합니다: 이 지역에 드롭합니다 사용자 수 있어야 하는데, 사실 이들은 그냥 범위를 표시할 수도 없는 구성 요소 또는 객체에는 텍스트에 텍스트 필드 (선택물 같은). 내가 만들어 스스로 해결할 수 없는 이 요소이라고 했다면 이들 각각의 동의하십시오 이벤트별로 드래그합니다 것이다. 그건 내가 가상본 구성 요소를 통해 만들 수 있다 하지만 I& 하지 않고 텍스트 에뮬레이션하도록 부동 소수점 # 39 isn& 경우, d, t # 39 필요하다.

-

39, ve i& 가까스로 이해했소 apc® 있지만브라우저에 공기와 모두에서 단 위에 있는 텍스트 범위에 있다 이제 가상본 컴포넌트와의 드롭합니다 전지전능하심이라 수 있어야 합니다. 저도 이쪽요 적절한 피드백을 주고 있는 떨어트림 승인되지 않은 경우 자동으로 드래그합니다 종료하십시오.

이 이상한 대해서 D& D 에서 AIR:

DragManager.doDrag(initiator, source, event, dragImage, offsetX, offsetY);

Flex 의 브라우저 기반의 &lt code&gt offsetX&lt /code>;;; 및 &lt code&gt offsetY&lt /code>;;; (그래서 따르면, 문서, 작동하잖아 fine) 제외어 합니다. 그러나 똑같은 code&lt /em&gt &lt 실행할 때, em>;; 공기 중 너회가 해야 offsets 양수입니다. 하지만 같은 번호를 양수입니다. 즉 매우 괴상하죠

-

39, ve 테스트되었습니다 i& 좀 더 [@maclema] [1] 에서 실행할 경우, 어떤 행위를 하지 않았다 "고 했다. 공기 중 끌어놓기를 것 같은데 다르다. # 39 의 it& 때문에 제대로 보이지 않는 것은 정말 이상한 의견 및 it& # 39 의 수락 취소 하려고 했지만, 역시 완전히 위치좌표 수 없습니다 그냥 내 응용 프로그램 대신 끄기입니다. 있지만브라우저에 공기와 끌어놓기 완전히 깨졌다.

또한, code&gt &lt 건너뛰는 dragEnter&lt /code>;; 하지만 모든 브라우저에서 실행되는 때 공기 브레이크를 처리기에서 제대로 작동합니다.

[1]: https://stackoverflow.com/questions/10870/how-can-i-unaccept-a-drag-in-flex # 11209

답변 5 개

오직 드래건터 방법을 사용하고 있습니까? 동시에 같은 구성 요소를 통해 드래그합니다 드래그합니다 거부하려면 할 경우 모두 사용해야 하는 방법 및 드래고버 드래건터 합니다.

체크아웃하려고 이 예:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.core.DragSource;
            import mx.managers.DragManager;
            import mx.events.DragEvent;

            private function onDragEnter(e:DragEvent):void {
                if ( e.target == lbl ) {

                    if ( e.localX < lbl.width/2 ) {
                        trace("accept");
                        DragManager.acceptDragDrop(this);
                    }
                    else {
                        DragManager.acceptDragDrop(null);
                    }
                }
            }

            private function doStartDrag(e:MouseEvent):void {
                if ( e.buttonDown ) {
                    var ds:DragSource = new DragSource();
                    ds.addData("test", "text");

                    DragManager.doDrag(btn, ds, e);
                }
            }
        ]]>
    </mx:Script>
    <mx:Label id="lbl" text="hello world!" left="10" top="10" dragEnter="onDragEnter(event)" dragOver="onDragEnter(event)" />
    <mx:Button id="btn" x="47" y="255" label="Button" mouseMove="doStartDrag(event)"/>
</mx:Application>

Theo
그는 12년 전 댓글을 달았습니다
0

'그냥' 은 현실적으로 드래그합니다 DRAG_ENTER 처리기에서 셨으며 한다. 난 아직도 can& 거역한자 드래그합니다 # 39, t (호출하십시오 주님으로부터그에게 효과를 볼 수 없습니다 (null) ',' 드래그만거스카스파트드래그드로프 적어도 효과) 의 작은 제어 및 적용 드래그합니다 입력하십시오. 절감뿐만 했어요. 지금 바로 아래 + 마우스 포인터를 표시됨을 컴포넌트용, 사용자가 입력하는 대신 특수 영역을 통해 표시하십시오 드래그된 시작.

Theo
그는 12년 전 댓글을 달았습니다
0

뭐, 그건 너무 이니시에이터를 할 것이라고 타겟일 보여주는 + 사용자가 해당 구성 요소를 통해 드래그 (워크플로가 말해둘꼐요 shouldn& # 39, t, t # 39 동의하십시오 doesn& 때문에 떨어트림). # 39, t 도왔으매 doesn& 작업 중 하나.

틀렸다니까 잘못 개념이다. 네 &quot unaccept"; 는 그 데이터를 통해 달성됩니다 드래고버핸들러 구현 및 신호 그들이성년에 않습니다.

다음은 기본 개념.

  1. 등록 또는 오버라이드합니다 드래건터핸들러 이미 등록하셨습니까 메서드입니다.

함수은 드래건터핸들러 (이벤트: Void 드라지벤트) { if (데이터 모음 적어도 하나의 위치를 이 구성) 드래그만거스카스파트드래그드로프 (이); }

이 컨테이너입니다 메시지를 더 이상 받을 수 있습니다 (드래고버 / 드래그렉시스). 그러나 이는 위치를 결정할 수 없는 종류의 마우스 커서 표시되어야 합니다.

, T # 39, 다른 핸들러도 aren& 없이 드래그만거스카스파트드래그드로프 (이) 라고 합니다.

  1. 등록 또는 오버라이드합니다 드래고버핸들러 이미 등록하셨습니까 메서드입니다.

함수은 드래고버핸들러 (이벤트: Void 드라지벤트) { if (적어도 내 위치를 이 구성 요소는 없는 데이터 suites) { 드래그만거스쇼페드백 (드래그만거그노네); 반품하십시오. }

. 다른 건, 표시 커서가 / 아이콘을 운영까지도 처리하십니까 // }

, 높여줍니까 호출하십시오 드래그만거스쇼페드백 (드래그만거그노네) 하는 표시하십시오 unaccept&quot ";).

  1. 등록 또는 오버라이드합니다 드래그렉시선들러 이미 등록하셨습니까 메서드입니다.

함수은 드래고버핸들러 (이벤트: Void 드라지벤트) { 같은 데이터를 처리할 때 // 받았습니다. }

39 don& 경우, t need 넷윈을 끌어놓기 공기 중, Flex 끌어놓기 비헤이비어를 드래그만거 설정 및 하위 클래스화 빈다우드라프리카션 통해 얻을 수 있습니다. Adobe 지라 이 슬라이드에서는 포스트에 자세한 정보: https://bugs.adobe.com/jira/browse/SDK-13983

예, 끌어놓기 다르다 "고 했다. 그게 싫어요! It takes a 주위에 많은 일을 하고 있는 것을 볼 수 있는 방법을 강구해야 동일합니까 사용자 정의 dnd flex 세워졌다.

이처럼 위치좌표, 아마 장난치지 러커토콘텐토 및 러커토영발 방법. 그들은 무엇을 도울 수 있는 좌표 변환 유용합니다.

행운을 빕니다. I will let you 다운로드되었는지 다른 사항은요 생각합니다.

ok, I see 문제가 됐다. Null 대신 시도하시겠습니까 설정, 이를 드라지니티이터.

이건 뭘까.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.DragEvent;
            import mx.managers.DragManager;
            import mx.core.DragSource;

            private function doStartDrag(e:MouseEvent):void {
                if ( e.buttonDown && !DragManager.isDragging ) {
                var ds:DragSource = new DragSource();
                ds.addData("test", "test");

                DragManager.doDrag(btn, ds, e);
                }
            }

            private function handleDragOver(e:DragEvent):void {
                if ( e.localX < cvs.width/2 ) {
                    //since null does nothing, lets just set to accept the drag
                    //operation, but accept it to the dragInitiator
                    DragManager.acceptDragDrop(e.dragInitiator);
                }   
                else {
                    //accept drag
                    DragManager.acceptDragDrop(cvs);
                    DragManager.showFeedback( DragManager.COPY );
                }
            }

            private function handleDragDrop(e:DragEvent):void {
                if ( e.dragSource.hasFormat("test") ) {
                    Alert.show("Got a drag drop!");
                }
            }
        ]]>
    </mx:Script>
    <mx:Canvas x="265" y="66" width="321" height="245" backgroundColor="#FF0000" id="cvs" dragOver="handleDragOver(event)" dragDrop="handleDragDrop(event)">
    </mx:Canvas>
    <mx:Button id="btn" x="82" y="140" label="Drag Me" mouseDown="doStartDrag(event)"/>
</mx:WindowedApplication>