문제

Flex 응용 프로그램에 드래그 앤 드롭 핸들러가 있습니다. 드래그하는 동안 드래그 프록시 또는 '유령'이미지를 드래그하기 전에로드해야하며 시간이 걸립니다. 즉시로드하거나 예압하려면 어떻게해야합니까? 한 가지 해결책은 이미지를 복제하는 것이지만, 내가 아는 한, 다른 변수를 만들지 않고는 이미지 객체를 복제 할 수 없으므로 여전히로드하는 데 시간이 걸립니다.

아마도이 코드는 더 잘 설명 할 것입니다.

public function DragApp (e : MouseEvent) : void {
    var dragInitiator : Image = e.currentTarget as Image;
    var dragSource : DragSource = new DragSource ();

    var dragProxy : Image = new Image ();
    dragProxy.source = e.currentTarget.source; // Won't work unless image is embedded
    dragProxy.load (e.currentTarget.source); // Must load

    setTimeout (DragManager.doDrag, 350, dragInitiator, dragSource, e, dragProxy);
}
도움이 되었습니까?

해결책

문제는 이미지의 너비와 높이를 설정하지 않는다는 것입니다 (내장 이미지의 경우 어떻게 든 중복) :

dragimage : iflexDisplayObject (default = null) - 드래그 할 이미지입니다. 이 주장은 선택 사항입니다. 생략하면 항력 및 드롭 작동 중에 표준 드래그 사각형이 사용됩니다. 이미지를 지정하는 경우 이미지의 높이와 너비를 명시 적으로 설정해야합니다. 그렇지 않으면 나타나지 않습니다..

예제에서 이미지 프록시의 너비와 높이를 정의하면 아마도 작동 할 것입니다.

var dragProxy : Image = new Image ();
dragProxy.source = dragInitiator.source;
dragProxy.width = dragInitiator.width;
dragProxy.height = dragInitiator.height;

다른 팁

이미지의 비트 맵 캡처를 사용하여 드래그 프록시로 사용하는 것이 좋습니다. 다음은 모든 uicomponent에서 bitmpdata를 캡처하는 간단한 코드입니다.

private function getUIComponentBitmapData( target : UIComponent ) : BitmapData
{ 
    var bd : BitmapData = new BitmapData( target.width, target.height );
    var m : Matrix = new Matrix();
    bd.draw( target, m );
    return bd;  
}

일단 있으면 BitMapData를 사용하여 새 비트 맵을 만들고 이미지 구성 요소의 소스로 비트 맵을 공급할 수 있습니다. 이 블로그 게시물의 자세한 내용 / 예 :

http://www.cynergysystems.com/blogs/page/andrewtrice?entry=flex_2_bitmapdata_tricks_and

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top