DataGrid에서 Flex 3 AIR 응용 프로그램의 List로 드래그 앤 드롭을 구현하고 있습니다. 드래그 이미지를 'imagePath'라는 데이터 격자 항목의 String 필드에서 참조하는 사진 (jpg)으로 만들고 싶습니다. 드래그하는 동안 이미지가 표시되는 데 문제가 있습니다. 나는 그것이 이미지에 대한 무효 경로 때문에가 아니라는 것을 확인했다. 내가 생각할 수있는 모든 방법으로 Image의 source() 및 load() 메서드를 시도했다. mouseDown 이벤트에서이 메서드를 'dragCurrentToList (event)'라고 부릅니다.이미지를 끌어서 놓기 위해 동적으로로드하는 방법은 무엇입니까?
private function dragCurrentToList(event:MouseEvent):void
{
var current:Object = event.currentTarget.selectedItem;
var dragImg:Image = new Image();
dragImg.load(current.imagePath);
dragImg.width = 100;
dragImg.width = 100;
var dsource:DragSource = new DragSource();
dsource.addData(current, 'record');
DragManager.doDrag(event.currentTarget as DataGrid, dsource, event, dragImg);
}
이미지 소스를 다음 바인딩 가능한 변수로 설정했지만 이미지 이름을 하드 코드하지 않으려는 경우 완벽하게 작동합니다.
[Bindable]
[Embed(source='assets/icons/default.jpg')]
public var dragIcon:Class;
...
dragImg.source = dragIcon
...
고마워요,하지만 그걸 시도했습니다. 아마도 imagePath가 클래스가 아니기 때문일 수 있습니다. 시도 : dragImg.source = contact.imagePath; 및 dragImg.source = "assets/icons/default.jpg"; dragImg.source = "@Embed (source = 'assets/icons/default.jpg')" 모두 동일한 동작을합니다. 드래그 할 때 아무 것도 표시되지 않고 콘솔에는 아무것도 표시되지 않습니다. 예, dragStart에 응답하도록 전환했습니다. 말이된다. – cafe101
http://livedocs.adobe.com/flex/3/html/help.html?content=dragdrop_5.html – cafe101
에 따라 dragStart를 사용하는 방법에 대해 살펴 보겠습니다. Flextras DataSorter에서 코드를 가져 와서 비슷한 접근법 [즉석에서 비트 맵 데이터를 생성합니다. 그래도 항목의 이미지 데이터를 참조하지 않습니다.] dragImage 데이터는 DragManager.doDrag 함수를 사용하여 dragStartHandler에 설정됩니다. 그러나, dragImage는 getter입니다. dragStageEvent를 사용하여 dragImage getter를 재정의 할 수 있습니까? dragEvent를 사용하기로 결정했다면 dragImage를 설정하려고하는 두 개의 경쟁 코드 섹션이 없도록 기존의 dragStartHandler를 재정의해야합니다. – JeffryHouser